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

如何将管道命令作为参数传入Bash脚本并执行?

问题解答

可以实现,但直接通过$CMD执行会无法正确解析管道符号,需要调整执行方式:

问题原因

当你执行parent-script.sh "child-script1.sh | child-script2.sh"时,带引号的参数会被shell当作单个完整字符串传入父脚本。如果父脚本仅执行$CMD,shell会尝试运行一个名为child-script1.sh | child-script2.sh的命令(把管道符号当作文件名的一部分),而不是将其解析为管道分隔的两个命令。

正确实现方式

在父脚本中使用eval命令重新解析字符串,让shell识别管道等特殊符号。示例父脚本:

#!/bin/bash
CMD="$1"
eval "$CMD"

运行parent-script.sh "child-script1.sh | child-script2.sh"后,eval会将字符串拆分为child-script1.sh和child-script2.sh,并通过管道执行两者。

注意事项

eval会执行字符串中的任意shell命令,若传入的参数来自不可信来源,可能存在安全风险(比如参数包含恶意命令会被直接执行),使用时需谨慎。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:01:18