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

在Mac(bash 5.2.0)下如何用xargs执行文件中每行bash命令?

Mac批量执行长bash命令的解决方法

方案1:调整xargs写法规避长度限制

Mac自带的是BSD版本xargs,使用-I时存在255字符左右的长度限制,这就是长命令报错的根源。可以舍弃-I,改用直接传递参数的方式:

cat file_with_commands.txt | xargs -P10 -n1 bash -c '$0'

如果命令包含空格、引号等特殊字符,建议用null分隔避免解析错误:

tr '\n' '\0' < file_with_commands.txt | xargs -0 -P10 -n1 bash -c '$0'

方案2:使用parallel工具(推荐)

parallel对长命令和特殊字符的支持更友好,先通过Homebrew安装:

brew install parallel

然后直接批量执行命令,-j10控制并发数:

parallel -j10 < file_with_commands.txt

方案3:纯bash脚本手动控制并发

不想安装额外工具的话,用bash循环配合后台进程实现:

#!/usr/bin/env bash
MAX_PROCS=10
running=0

while IFS= read -r cmd; do
    # 后台执行命令
    bash -c "$cmd" &
    ((running++))
    # 达到最大并发数时,等待任意一个进程结束
    if (( running >= MAX_PROCS )); then
        wait -n
        (( running-- ))
    fi
done < file_with_commands.txt
# 等待剩余进程执行完毕
wait

将上述内容保存为run_cmds.sh,赋予执行权限后运行:

chmod +x run_cmds.sh
./run_cmds.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:42:39