我的系统是CentOS 6.5 当我想使用反引号来运行filename中的命令时,我得到了以下结果:
文件的内容如下:
[liu-uil@~ 15:54:16]$cat test
echo 1;
echo 2;
echo 3;
[liu-uil@~ 15:54:18]$`cat test`
1; echo 2; echo 3;
[liu-uil@~ 15:54:24]$
第一个echo之后的命令都被视为文本平原,我不知道为什么?有人可以向我解释这个吗?非常感谢你!
答案 0 :(得分:2)
命令替换是扩展之一。当命令行已经拆分成命令时发生扩展,创建新命令为时已晚。
您可以使用
eval `cat 1`
再次调用shell解析器将字符串拆分为命令并运行它们。
答案 1 :(得分:0)
只有反引号命令结果中的第一个单词被解释为命令。剩下的文本是参数列表。
如果要在文件中运行命令,则不需要反引号,需要dot (.) command:
[liu-uil@~ 15:54:16]$. test