You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Bash脚本输出内容时换行写入文件?

解决Bash脚本写入多行内容的问题

你遇到的问题是用错了换行转义符,下面提供几种可行的解决方法:

方法1:修正echo命令的转义符

把原来的\换成\n,echo -e会解析\n作为换行符:

echo -e "jira.node.id = node$RANDOM\njira.shared.home = /var/sharedhome" | tee -a /var/atlassian/application-data/jira/cluster.properties

方法2:用printf替代echo(更可靠)

printf对转义字符的解析更稳定,跨平台性更好:

printf "jira.node.id = node%d\njira.shared.home = /var/sharedhome\n" $RANDOM | tee -a /var/atlassian/application-data/jira/cluster.properties

方法3:分多次输出(直观易懂)

把两行内容分开echo,或者用大括号组合后一次性追加:

# 分开两次echo
echo "jira.node.id = node$RANDOM" | tee -a /var/atlassian/application-data/jira/cluster.properties
echo "jira.shared.home = /var/sharedhome" | tee -a /var/atlassian/application-data/jira/cluster.properties

# 或者用大括号减少tee调用次数
{
  echo "jira.node.id = node$RANDOM"
  echo "jira.shared.home = /var/sharedhome"
} | tee -a /var/atlassian/application-data/jira/cluster.properties

方法4:使用Here-Document(适合多行内容)

这种方式直接编写多行文本,变量会自动解析,不需要转义:

tee -a /var/atlassian/application-data/jira/cluster.properties <<EOF
jira.node.id = node$RANDOM
jira.shared.home = /var/sharedhome
EOF

问题原因说明

你之前用的\是用来转义空格的(避免空格被解析为分隔符),并不是换行转义符。echo -e需要识别\n来生成换行,替换后就能得到你想要的多行效果。

内容的提问来源于stack exchange,提问作者Legion_of_boom__

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:25:15