如何将标准输出中的内容作为命令按顺序批量执行?
不存在你预设的名为execute的专用命令,但可以通过Linux自带的shell工具直接实现需求,具体方案如下:
方案1:直接管道传递给Bash执行(最推荐)
只要你的Python脚本输出的内容仅包含需要执行的命令(你示例中首行的(base) tkl@TKL ~/Desktop python aaa.py是终端提示符前缀,不属于脚本输出,需要确保脚本不会输出这类无关内容,若存在多余内容可以先过滤),直接执行以下命令即可:
python aaa.py | bash
如果需要同时打印执行的命令本身方便校验,可以开启bash的调试模式:
python aaa.py | bash -x
所有命令的执行输出都会在当前shell中统一打印,且会正确解析命令中的管道、重定向等特殊语法,比如你示例中的find . | grep bro可以正常执行。
方案2:配合xargs逐行执行(适配你预想的写法)
如果你想要贴合你提到的xargs -i的写法,也可以用以下命令实现,原理是把每行输出作为命令交给bash子进程执行:
python aaa.py | xargs -d '\n' -I {} bash -c '{}'
该方案的效果和直接管道给bash一致,但写法更繁琐,更推荐用第一种方案。
注意事项
执行前请先单独运行python aaa.py确认输出的所有命令都是符合预期的,避免执行恶意或者错误的命令造成损失。
内容的提问来源于stack exchange,提问作者Mactarvish
相关产品推荐
相关产品推荐

