在我的脚本中,作为一个大表达式的一部分,我有date --date="yesterday"
,并且正在终端中进行测试。如果仅使用命令本身就可以正常工作,但是当我执行类似"$(date --date="yesterday")"
的操作时,这就是输出bash: Wed Jun 5 15:10:55 EDT 2019: command not found...
为什么找不到添加命令?
答案 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
。
如果您不希望发生这种情况,请不要使用$( )
。