常说变量在使用时要双引号。
在以下示例中,我希望将命令echo "You can't see me"
放在变量中并以输出为You can't see me
. 这是最终目标。
$ cmd="echo \"You can't see me\""
$ echo "$cmd"
echo "You can't see me"
$ $cmd
"You can't see me"
$ "$cmd"
echo "You can't see me": command not found
所以$cmd
跑了,它包含了我不想有的双引号,并且遵循双引号变量的建议导致了一个错误。
尽管资源表明它们总是应该被使用,但该建议是否有例外?
我知道如何通过运行eval "$cmd"
(或不带双引号)或在运行后对输出进行适当的转换$cmd
(不带双引号)来获得我想要的结果,但是我该如何避免这个问题呢?