You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash单行命令中运行多个shell脚本文件?

问题原因

你使用的大括号扩展语法{test1,test2}.sh只会被shell展开为两个并列的路径字符串,最终实际执行的命令等价于:

~/dotfiles/scripts/test1.sh ~/dotfiles/scripts/test2.sh

此时shell只会把第一个路径识别为待执行的程序,第二个路径会被当做传入test1.sh的命令行参数,自然不会触发test2.sh的执行。

正确实现方式

根据你需要的执行逻辑,选对应写法即可:

  • 顺序强制执行:无论前一个脚本运行成功还是失败,都按顺序跑完两个脚本
    直接用分号分隔两个执行命令即可:
    ~/dotfiles/scripts/test1.sh; ~/dotfiles/scripts/test2.sh
    
    如果同目录下要执行的脚本数量多,不想重复写路径,可以配合for循环用大括号扩展简化写法:
    for s in ~/dotfiles/scripts/{test1,test2}.sh; do "$s"; done
    
  • 依赖前置成功执行:只有前一个脚本执行成功(退出码为0)才运行下一个脚本,用&&连接:
    ~/dotfiles/scripts/test1.sh && ~/dotfiles/scripts/test2.sh
    
  • 并行执行:两个脚本同时在后台运行,不互相等待,用&把第一个脚本放后台执行即可:
    ~/dotfiles/scripts/test1.sh & ~/dotfiles/scripts/test2.sh
    

注意:如果你的脚本没有添加可执行权限(未执行chmod +x 脚本路径),需要显式指定shell解释器调用,比如把命令里的脚本路径改成bash ~/dotfiles/scripts/test1.sh这种形式,否则会报权限不足错误。

内容的提问来源于stack exchange,提问作者Owen Young

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:20:04