Bash - 跨多行的多个命令

开发

我有一个很长的 Bash 命令。这个命令看起来像这样:

grunt build && mv file1.txt ../../results && mv file2.txt ../../logs && mv file3.txt ../home && mv file4.txt ../../../deployments

我正在将此命令添加到README.md文件中。我想让它 a) 易于阅读和 b) 可复制和粘贴。我的问题是,如何为 Bash 制作一个易于阅读的多命令行?

我尝试了以下方法,但没有奏效:

grunt build && \
  mv file1.txt ../../results && \ 
  mv file2.txt ../../logs && \ 
  mv file3.txt ../home && \
  mv file4.txt ../../../deployments

谢谢你。

卡米尔·马乔罗夫斯基

解释

您可以使用反斜杠 ( \)在下一行中继续执行命令,但前提是反斜杠位于终止该行的换行符之前。在您的代码中,几个反斜杠后有空格。删除它们。

注意,即使在.之后有未加引号、未转义的空格,Bash 也可以从下一行继续读取该命令&&的末尾但如果有一个逃逸的空间,就像你的情况一样。&&


例子

这将起作用:

true   && \
echo b   # ^ no space here, newline character immediately after \

这将起作用:

true   &&         
echo b # ^^^^^^^^^ zero or more spaces, they don't matter

(更改truefalse学习&&确实它的工作。)

但这行不通*:

true   && \ 
echo b   # ^ escaped space here, it breaks things

转义的空间就像一个引用的空间。这也行不通*:

true   && ' '
echo b   # ^ quoted space here, it breaks things

* 好吧,如果 您的操作系统中有一个名为(文字空间)的命令,它将起作用这在技术上是可能的,但非常非常不常见(如果我看到这样的可执行文件,我马上就会闻到一些腥味)。该代码段仍然无法按照您希望的方式工作,因为&&将连接trueand ,而不是trueand echo


边注

像这样的代码:

foo && \
bar

\正确转义换行符的地方)是有效的,但也是多余的。有可能:

foo &&
bar

一些用户不喜欢上述任何一项,因为通过检查行的开头,人们无法判断是否bar应该有条件或无条件地运行。需要检查第一行的末尾(可能很长)才能找到&&.

因此,人们可能更喜欢这样:

foo \
&& bar

\是强制性的,但很明显bar应该取决于前一行,即使前一行很长并且没有立即发现反斜杠。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何跨多行包装嵌入在bash / shell脚本中的长sed命令?

来自分类Dev

多行bash命令中的注释

来自分类Dev

作为单行命令bash运行多行

来自分类Dev

sed命令添加多行bash

来自分类Dev

在bash命令替换中包含多行

来自分类Dev

Linux Bash脚本,单个命令但多行?

来自分类Dev

作为单行命令bash运行多行

来自分类Dev

Bash:将多行解析为单行命令

来自分类Dev

这是bash中多行命令的文档

来自分类Dev

带输入的 Bash 多行命令 | 输出

来自分类Dev

Bash脚本执行多个命令

来自分类Dev

Bash中的多个sed命令

来自分类Dev

OR后执行多个Bash命令

来自分类Dev

如何以sudo方式运行多行bash命令

来自分类Dev

如何停止在BASH脚本中串联命令替换的多行输出?

来自分类Dev

如何为bash脚本测试命令的多行输出的字段?

来自分类Dev

多行命令插入线在bash脚本使用for循环

来自分类Dev

在bash终端中复制,粘贴和编辑多行命令

来自分类Dev

如何在Bash中的多行命令中编辑前几行?

来自分类Dev

bash多行命令,在连续字符后带有注释

来自分类Dev

通过SSH运行多行bash命令不起作用

来自分类Dev

如何为bash脚本测试命令的多行输出的字段?

来自分类Dev

通过ssh运行具有多行输入的bash命令

来自分类Dev

将fdisk bash命令输出到多行变量

来自分类Dev

如何在python中运行多行bash命令?

来自分类Dev

!! bash命令

来自分类Dev

Bash:多个命令行替换

来自分类Dev

Powershell Bash / Zsh命令中的多个参数

来自分类Dev

Bash:多个命令行替换