【问题标题】:run commands on linux without interruption在linux上不间断地运行命令
【发布时间】:2013-12-22 09:14:20
【问题描述】:

我有多个命令。而且我想在Linux上一步运行所有这些命令而不会中断(等到第一个命令的输出完成然后运行第二个,依此类推)。如果有什么办法吗??..我有要在文本文件中运行的命令。

【问题讨论】:

    标签: linux scripting command


    【解决方案1】:

    试试:

    command1 ; command2 ; command3
    

    如果您想将 command1 的输出通过管道传输到 command2 并最终运行 command3:

    command1 | command2 ; command3
    

    分号方式不会考虑上一个命令是否成功。如果您想在 command1 失败时停止执行,您可以使用:

    command1 && command2 ; command3
    

    【讨论】:

    • 我试过 command1; command2 它正在工作,但它只显示输出和第一个 commamd,不打印其他命令的命令。我需要每个命令及其输出
    【解决方案2】:

    如果你想用一个命令行来做,你可以用分号连接命令:

    command1 ; command2 ; command3
    

    如果您希望后面的命令仅在前面的命令成功后运行,请用“&&”连接它们:

    command1 && command2 && command3
    

    【讨论】:

    • 我试过 command1; command2 它正在工作,但它只显示输出和第一个 commamd,不打印其他命令的命令。我需要每个命令及其输出
    • 输出是什么意思?当我输入 'pwd ; ls' 我得到了两个命令的输出。
    • 例如:如果我运行:command1;command .. 输出是:output1 output2.. 我希望它是:command1 output1 command2 output2
    【解决方案3】:

    如前面的答案所述,您可以使用; 和&& 来终止或分隔命令列表中的命令,其中; 表示简单的无条件排序,&& 表示仅在以下情况下执行以下命令上一个成功了。 (其他命令分隔符包括&、|、|| 等;请参阅 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2022-10-19
      • 2011-08-15
      • 1970-01-01
      相关资源
      最近更新 更多