我将命令存储在变量中cmd
,并使用以下语句获取命令的输出:
echo `$cmd`
一切正常ls -l
,除了换行符丢失。
答案1
如果您已将命令存储在字符串变量中,那么要运行它,您需要
eval "$cmd"
$cmd
仅当命令不包含除空格之外的任何 shell 特殊字符时运行才有效。一般来说,将命令存储在字符串变量中是一个坏主意。最好定义一个函数:
cmd () {
ls -l
}
然后你就可以运行它了cmd
。
最直接的问题是您进一步破坏了命令的输出,因为您正在使用不带引号的命令替换。您需要在变量和命令替换周围使用双引号。定义cmd
为函数:
echo "`cmd`"
为了避免复杂命令出现意外,请使用美元括号而不是反引号:
echo "$(cmd)"