Shell命令含&&、||时如何换行拆分?是否必须使用续行符\?
Shell命令拆分方案
续行符使用规则
不是所有拆分场景都需要加续行符\,核心判断逻辑如下:
- 如果把
&&、||这类逻辑运算符放在行尾,Shell会自动识别当前命令逻辑未结束,不需要额外加续行符 - 如果把
&&、||放在下一行的行首,就必须在上一行末尾加续行符\,否则Shell会将上一行判定为独立命令直接执行 - 花括号
{}内部的命令换行不需要续行符,只要保证命令之间用换行或分号分隔即可。
拆分后的示例代码
写法1:运算符放行尾(无需续行符)
(( cval != 1 )) && echo "$k" || { echo "" printf '%s\n' "${desc[@]}" }
写法2:运算符放新行行首(需加续行符)
这种写法逻辑层次更直观,适合复杂的链式命令:
(( cval != 1 )) \ && echo "$k" \ || { echo "" printf '%s\n' "${desc[@]}" }
以上两种写法都符合Shell语法规范,可以根据个人编码习惯选择。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

