gpt4 book ai didi

bash - 将多行字符串回显到文件 bash

转载 作者:行者123 更新时间:2023-11-29 09:18:57 24 4
gpt4 key购买 nike

我想将一些包含换行符的文本回显到我的 bash 脚本中的文件中。我可以只做 echo -e "line1\n line2\n" 但当文本变得很长时,这将变得不可读。我尝试用换行符代替以下操作:

echo -e "[general]\
state_file = /var/lib/awslogs/agent-state\
[/var/log/messages]\
file = /var/log/messages\
log_group_name = /var/log/messages\
log_stream_name = {ip_address}\
datetime_format = %b %d %H:%M:%S\

但是,在插入文本时,没有放置换行符,因此整个内容都在一行中。有没有办法在让 bash 脚本可读的同时用换行符回显文本?

最佳答案

如果你想使用echo , 只需这样做:

echo '[general]
state_file = /var/lib/awslogs/agent-state
[/var/log/messages]
file = /var/log/messages
log_group_name = /var/log/messages
log_stream_name = {ip_address}
datetime_format = %b %d %H:%M:%S'

即将整个字符串用引号引起来,不要尝试转义换行符。看起来您不想扩展字符串中的任何 shell 参数,因此请使用单引号。

或者,为此目的使用 heredoc 是很常见的:

cat <<EOF
[general]
state_file = /var/lib/awslogs/agent-state
[/var/log/messages]
file = /var/log/messages
log_group_name = /var/log/messages
log_stream_name = {ip_address}
datetime_format = %b %d %H:%M:%S
EOF

请注意,在这种情况下,shell 参数将被扩展。使用 bash,你可以使用 <<'EOF'而不是 <<EOF在第一行以避免这种情况。

关于bash - 将多行字符串回显到文件 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39277019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com