V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Humorize
V2EX  ›  程序员

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

  •  
  •   Humorize · 2 天前 · 830 次点击

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

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

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

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

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

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

    执行完 未发生错误都是 return 0 给调用方的,否则 return 错误码。
    julyclyde
        3
    julyclyde  
       1 天前
    “各命令被执行的顺序无所谓”
    这就不是个脚本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1194 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 18:06 · PVG 02:06 · LAX 11:06 · JFK 14:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.