首页 > 解决方案 > Bash 命令输出正确,但未找到命令如下

问题描述

在我的脚本中,作为一个大表达式的一部分,我有date --date="yesterday"并且我正在终端中进行测试。如果它只是自己的命令,它工作正常但是当我做这样的事情时"$(date --date="yesterday")",这就是输出bash: Wed Jun 5 15:10:55 EDT 2019: command not found...

为什么找不到添加命令?

标签: bash

解决方案


因为$(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.

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


推荐阅读