我有多个命令。我希望在没有中断的情况下一步在linux上运行所有这些命令(等到第一个命令的输出完成然后再运行第二个等等。)如果有办法做到这一点??我有所有要在文本文件中运行的命令。
答案 0 :(得分:0)
尝试:
command1 ; command2 ; command3
如果要将command1的输出传递给command2,最后运行command3:
command1 | command2 ; command3
分号方法不会考虑前一个命令是否成功。如果要在command1失败时停止执行,可以使用:
command1 && command2 ; command3
答案 1 :(得分:0)
如果您想使用单个命令行执行此操作,可以使用分号连接命令:
command1 ; command2 ; command3
如果您希望以后的命令仅在较早的命令成功时运行,请将它们与“&&”连接:
command1 && command2 && command3
答案 2 :(得分:0)
如前面的答案中所述,您可以使用;
和&&
来终止或分离命令列表中的命令,其中;
表示简单的无条件排序和&&
表示仅在前一个命令成功时才执行以下命令。 (其他命令分隔符包括&
,|
,||
等;请参阅开头附近的 SHELL GRAMMAR 部分中的列表小节bash手册页的详细说明。)
要使列表中的命令与这些命令的输出间穿插,您可以使用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