【发布时间】:2013-12-22 09:14:20
【问题描述】:
我有多个命令。而且我想在Linux上一步运行所有这些命令而不会中断(等到第一个命令的输出完成然后运行第二个,依此类推)。如果有什么办法吗??..我有要在文本文件中运行的命令。
【问题讨论】:
我有多个命令。而且我想在Linux上一步运行所有这些命令而不会中断(等到第一个命令的输出完成然后运行第二个,依此类推)。如果有什么办法吗??..我有要在文本文件中运行的命令。
【问题讨论】:
试试:
command1 ; command2 ; command3
如果您想将 command1 的输出通过管道传输到 command2 并最终运行 command3:
command1 | command2 ; command3
分号方式不会考虑上一个命令是否成功。如果您想在 command1 失败时停止执行,您可以使用:
command1 && command2 ; command3
【讨论】:
如果你想用一个命令行来做,你可以用分号连接命令:
command1 ; command2 ; command3
如果您希望后面的命令仅在前面的命令成功后运行,请用“&&”连接它们:
command1 && command2 && command3
【讨论】:
如前面的答案所述,您可以使用; 和&& 来终止或分隔命令列表中的命令,其中; 表示简单的无条件排序,&& 表示仅在以下情况下执行以下命令上一个成功了。 (其他命令分隔符包括&、|、|| 等;请参阅 bash 手册页开头附近的 SHELL GRAMMAR 部分中的 Lists 小节它们如何工作的详细信息。)
要使列表中的命令与这些命令的输出穿插显示,您可以使用 set -x 来打开 shell 的 XTRACE 选项。稍后,使用set +x 将其关闭。 XTRACE 显示命令的格式由 PS4 参数的内容控制。下面是两行命令输入和 14 行输出的示例记录:
$ alias d='date +%N'
$ d;d; set -x; d;d; echo PS4 is $PS4; d; set +x; d;d;d
726496303
729638881
+ date +%N
733073117
+ date +%N
736249778
+ echo PS4 is +
PS4 is +
+ date +%N
739730109
+ set +x
743027175
746206908
749367086
【讨论】: