【问题标题】:backticks `cat filename` failed, file content is several commands反引号`cat filename`失败,文件内容是几个命令
【发布时间】:2015-12-08 16:54:11
【问题描述】:

我的系统是 CentOS 6.5 当我想使用反引号运行文件名中的命令时,我得到以下结果:

文件内容如下:

[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]$

第一个回显之后的命令都被视为纯文本,我不知道为什么?有人可以向我解释一下吗?非常感谢!

【问题讨论】:

  • 您实际上想要完成什么?无论您的最终目标是什么,反引号中的cat 可能不是您应该使用的。
  • 我只是想多了解一点反引号并解决这个问题:)(有点书呆子)

标签: linux bash cat backticks


【解决方案1】:

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

你可以使用

eval `cat 1`

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

【讨论】:

  • 啊哈,我明白了,现在我知道它不起作用的原因了,但是 eval 'cat test' 和 ``cat test' 都不能得到预期的结果
【解决方案2】:

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

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

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

【讨论】:

  • 感谢您的回复,我知道 .测试方法:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2017-09-08
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
相关资源
最近更新 更多