我有一个bash脚本,其中包含类似于以下内容的内容:
cmd="grep 'a b'"
echo $cmd
$cmd
我遇到的问题是$ cmd由于某种原因删除了'a b'周围的引号,并以grep a b
执行命令,导致错误:
% ./test.sh
grep 'a b'
grep: b': No such file or directory
我尝试过各种引号和转义组合,但结果总是一样。
答案 0 :(得分:5)
存储命令的最佳位置是函数。经验法则:变量用于数据;函数用于命令。
cmd() {
grep 'a b'
}
...
cmd
答案 1 :(得分:3)