在 bash 命令替换中有多行

cof*_*Mug 5 bash shell-script

我在命令替换中有一个很长的 bash 命令,如下所示:

$( comaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaand )
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法将此命令分成较短的行以提高可读性,如下所示:

$( com 
   aaaaaaaaaaaaaa
   aaaaaaaaaaaaaa
   nd )
Run Code Online (Sandbox Code Playgroud)

Rap*_*ens 13

您可以使用\.

$( com\
aaaaaaaaaaaaaa\
aaaaaaaaaaaaaa\
nd )
Run Code Online (Sandbox Code Playgroud)

\告诉shell忽略换行符。

  • ``\`` 部分是正确的,但后面的行不能缩进。(至少不是在示例中的单词中间。) (2认同)
  • @Coffe_Mug 仅当 `commaaaaaaaaaaaaaand` 实际上是带有很多选项的命令时才有效,并且 | 也许管道等`。否则它不适用于缩进。尝试 `echo $(ec\<NEWLINEHERE>ho a)`,在 `echo $(ec\<NEWLINE HERE><INDENTATION HERE>ho a)` 产生 *ec: command not 时有效成立*。而 `echo $(echo Hello,\<NEWLINE HERE> World)`[注意换行符后面的空格] 和 `echo $(echo Hello,<NEWLINE HERE><INDENTATION HERE> World)` 做的事情完全一样。 (2认同)

小智 11

如果|长 Bash 命令行中有管道符号,则可能不需要反斜杠\来屏蔽换行符,因为管道|符号也可用于格式化代码。

# example
ls | 
 cat -n | 
 tail   | 
 head
Run Code Online (Sandbox Code Playgroud)

  • +1。与 `&&` 和 `||` 相同 (5认同)