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

如何在Bash中执行存储于变量内的含空格参数的命令?

解决Bash中变量存储带空格参数命令的执行问题

问题根源

你把命令存成字符串变量后,Bash执行$comm时会按空格拆分整个字符串,这里会被拆成./test.sh、"Abcd、Efgh"三个部分,所以test.sh拿到的第一个参数是"Abcd",就出现了你看到的错误输出。

解决方案

方法一:用数组存储命令(推荐)

Bash的数组可以正确保留包含空格的参数,不会被错误拆分,这是处理这类场景的标准做法:

# 定义数组,每个元素对应命令或参数(带空格的参数作为单个元素)
comm=(./test.sh "Abcd Efgh")
# 执行数组,必须用引号包裹${comm[@]},确保参数完整传递
"${comm[@]}"

执行后,test.sh会正确接收Abcd Efgh作为第一个参数,输出符合预期。

方法二:使用eval(谨慎使用)

如果一定要用字符串存储命令,可以借助eval解析字符串中的引号,但eval会触发所有字符的Shell展开,若参数包含$、*等特殊字符,可能引发意外问题,仅在确定参数安全时使用:

comm='./test.sh "Abcd Efgh"'
eval "$comm"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:59:54