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

如何在Bash中将字符串拆分为多行?

在Bash中优雅地写多行字符串

兄弟,这事儿完全不用忍!Bash里有好几种优雅的多行字符串写法,完美解决80字符限制下的排版杂乱问题,甚至能实现类似Python/Ruby那样的简洁效果,给你讲几个最实用的:

1. Here Document(最推荐,类似三引号)

这是Bash里处理多行字符串的黄金方案,排版干净,还能灵活控制是否展开变量/转义字符。

基础用法(保留换行和空格,支持变量展开)

# 把多行内容赋值给变量
user_greeting=$(cat <<EOF
Hello, welcome to Bash multi-line strings!
当前用户是:$USER
今天的日期是:$(date +%Y-%m-%d)
EOF
)

# 输出看看效果
echo "$user_greeting"

原样输出(不展开变量/转义)

如果不想让Bash解析变量、命令或者转义字符,给标记加单引号就行:

raw_str=$(cat <<'EOF'
这里的$USER不会被替换
\n也不会被转义成换行
`date`也不会执行命令
EOF
)

echo "$raw_str"

这种写法和Python的三引号字符串几乎一模一样,排版完全自由,怎么写怎么输出。

2. Here String(短多行场景)

如果你的多行字符串比较短,也可以用$'...'的形式,里面用\n手动换行:

quick_note=$'今天要做的事:\n- 整理Bash笔记\n- 测试多行字符串\n- 喝杯咖啡'
echo "$quick_note"

优点是写法紧凑,适合内容不多的场景,缺点是需要手动添加换行符。

3. 反斜杠续行(适合合并单行的场景)

如果只是想把长字符串拆成多行书写,但最终输出是单行的,可以用反斜杠(注意反斜杠后面不能有空格):

long_single_line="这是一段非常非常长的字符串,\
拆成多行书写后,输出时会自动合并成一行\
完全没有换行符"
echo "$long_single_line"

如果要保留换行,就得手动加\n,但这种写法不如heredoc直观,一般不推荐用于需要保留换行的场景。

总结一下,优先用带单引号标记的Here Document,完全满足你想要的简洁多行需求,排版整齐还不容易踩坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:17:32