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

如何实现Bash脚本执行以参数形式传入的指定命令?

解决Bash脚本精准执行传入命令的问题

正确的args脚本代码如下:

#!/bin/bash
set -x
"$@"

问题原因与解决方案说明

  • 你之前使用$*或未加引号的$@时,Bash会触发单词拆分和路径名扩展两个机制:
    • 单词拆分会把参数中的连续多空格合并成单个空格,导致输出时空格丢失;
    • 路径名扩展会解析*这类通配符,尝试匹配当前目录下的文件(若存在匹配项会直接替换为文件名列表)。
  • 给$@加上双引号"$@"后,Bash会严格保留每个参数的原始格式:
    • 每个参数作为独立整体传递,不会拆分内部的空格;
    • 通配符不会被展开,保持原始字符串形态。

验证执行结果

执行./args echo 'foobar *0x0'后,会输出:

+ echo 'foobar    *0x0'
foobar    *0x0

完全符合你期望的精准执行效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:10:52