反引号`cat filename`失败,文件内容是几个命令

时间:2015-12-08 08:00:50

标签: linux bash cat backticks

我的系统是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之后的命令都被视为文本平原,我不知道为什么?有人可以向我解释这个吗?非常感谢你!

2 个答案:

答案 0 :(得分:2)

命令替换是扩展之一。当命令行已经拆分成命令时发生扩展,创建新命令为时已晚。

您可以使用

eval `cat 1`

再次调用shell解析器将字符串拆分为命令并运行它们。

答案 1 :(得分:0)

只有反引号命令结果中的第一个单词被解释为命令。剩下的文本是参数列表。

如果要在文件中运行命令,则不需要反引号,需要dot (.) command

[liu-uil@~ 15:54:16]$. test