Bash命令正确输出,但是以下命令未找到

时间:2019-06-06 19:21:37

标签: bash

在我的脚本中,作为一个大表达式的一部分,我有date --date="yesterday",并且正在终端中进行测试。如果仅使用命令本身就可以正常工作,但是当我执行类似"$(date --date="yesterday")"的操作时,这就是输出bash: Wed Jun 5 15:10:55 EDT 2019: command not found...

为什么找不到添加命令?

1 个答案:

答案 0 :(得分:3)

因为$(foo)意味着要运行命令foo,捕获其输出,然后将其插入命令行。

例如:

cat ab$(echo cd)

首先运行echo cd,捕获其输出(cd),然后将其插入命令行,给出

cat abcd

然后运行cat abcd

跑步时

"$(date --date="yesterday")"

它首先执行date --date="yesterday",捕获其输出(Wed Jun 5 15:10:55 EDT 2019),然后将其重新插入命令行,给出

"Wed Jun  5 15:10:55 EDT 2019"

然后尝试将其作为命令运行,因为Wed Jun 5 15:10:55 EDT 2019不是可执行文件的名称而失败。

如果您未在$( )前后使用引号,即

$(date --date="yesterday")

它将最终试图运行

Wed Jun  5 15:10:55 EDT 2019

,错误将是bash: Wed: command not found

如果您不希望发生这种情况,请不要使用$( )