bash - Bash 命令输出正确,但未找到命令如下
问题描述
在我的脚本中,作为一个大表达式的一部分,我有date --date="yesterday"
并且我正在终端中进行测试。如果它只是自己的命令,它工作正常但是当我做这样的事情时"$(date --date="yesterday")"
,这就是输出bash: Wed Jun 5 15:10:55 EDT 2019: command not found...
为什么找不到添加命令?
解决方案
因为$(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
.
如果您不希望这种情况发生,请不要使用$( )
.
推荐阅读
- django - Django 动态表单多对多字段
- android - Android Studio 3.3.2 布局更改不起作用
- java - 不兼容的类型:列出 CSVRecords java
- javascript - Algolia ./docsearch run failed: AlgoliaException: Invalid Application-ID or API key
- android - Android Camera2帧水平反转
- angular - 在 Angular 7 中手动包含库 fontawesome Pro
- certificate - 即使正确生成了 acme.json 文件,Traefik 仍在使用默认证书
- c++ - c++中类的定义和访问标识符
- voice-recognition - 如何将私人 GitHub 存储库中的代码导入到 snips 中?
- javascript - 如何在循环内生成数字模式?