我将命令存储在变量中cmd
,并使用以下语句获取命令的输出:
echo `$cmd`
一切正常,除了ls -l
,缺少换行符。
如果您将命令存储在字符串变量中,则需要运行该命令
eval "$cmd"
$cmd
仅当命令不包含空格以外的任何Shell特殊字符时,运行才有效。通常,将命令存储在字符串变量中不是一个好主意。最好定义一个函数:
cmd () {
ls -l
}
然后,您可以使用just运行它cmd
。
最直接的问题是,由于使用的是无引号的命令替换,因此您将进一步处理命令的输出。您需要在变量和命令替换周围使用双引号。具有cmd
定义为功能:
echo "`cmd`"
为避免复杂命令带来的意外,请使用美元括号而不是反引号:
echo "$(cmd)"
请参阅为什么我的Shell脚本会在空白或其他特殊字符上造成窒息?进行解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句