V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Humorize
V2EX  ›  程序员

如何交互式多进程执行 shell 脚本中的所有命令?

  •  
  •   Humorize · Mar 30, 2025 · 1757 views
    This topic created in 403 days ago, the information mentioned may be changed or developed.

    有个 shell 脚本,每行都是一条可以被独立执行的命令,各命令被执行的顺序无所谓,每条命令只能被执行一次,设定同时最多执行的命令数量,希望能多进程交互式执行所有这些命令

    至于为什么要交互式,因为这些命令有可能需要接收用户的输入,而且用户希望看到命令的标准输出和标准错误,有的标准输出还包括在一行内不断刷新的进度条

    目前知道 screen 能新建多个窗口,且可以用 screen 命令将需要执行的命令发送给已有的 screen 会话的窗口,然后交互式地执行。但是怎么及时知道发送过去的那条命令是否执行完了,以及它的返回值呢?

    请问大家有什么好的办法吗?不局限于用 screen

    3 replies    2025-03-31 12:10:19 +08:00
    ETiV
        1
    ETiV  
       Mar 30, 2025
    使用 mkfifo ,配合管道,把命令在哪个 pane 执行、exit code 在执行完的时候丢进去?
    busier
        2
    busier  
       Mar 30, 2025 via Android
    没什么特殊方法

    Linux 命令脚本调用默认就是 shell wait 方式调用,返回就是执行完了。

    执行完 未发生错误都是 return 0 给调用方的,否则 return 错误码。
    julyclyde
        3
    julyclyde  
       Mar 31, 2025
    “各命令被执行的顺序无所谓”
    这就不是个脚本
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3424 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 12:11 · PVG 20:11 · LAX 05:11 · JFK 08:11
    ♥ Do have faith in what you're doing.