我正在编写一个shell脚本,我设置的变量很少,其值是命令的输出.
我得到的错误是:
$ $tag_name="proddeploy-$(date +"%Y%m%d_%H%M")" -bash: =proddeploy-20141003_0500: command not found
现在,我确实阅读了其他类似的问题并在此基础上尝试了各种各样的事情:
$ $deploy_date=date +"%Y%m%d_%H%M" bash: =date: command not found $ $tag_name="proddeploy-$deploy_date" bash: proddeploy- command not found
$ $tag_name=`proddeploy-$(date +"%Y%m%d_%H%M")` bash: proddeploy-20141003_1734: command not found bash: =: command not found
$()
$ $tag_name=$(proddeploy-$(date +"%Y%m%d_%H%M")) bash: proddeploy-20141003_1735: command not found bash: =: command not found
但在每种情况下,命令输出都会被执行.如何让它停止执行命令输出并只存储为变量?我需要这个在ZSH和BASH上工作.
用var=string
or 定义变量var=$(command)
.
所以你必须删除领先$
和任何其他迹象=
:
tag_name="proddeploy-$(date +"%Y%m%d_%H%M")" deploy_date=$(date +"%Y%m%d_%H%M") ^^ ^
从命令替换:
`COMMAND`
对于Bash,第二种形式或多或少已经过时,因为它在嵌套方面存在一些问题("内部"反引号需要被转义)和转义字符.使用$(COMMAND)
,它也是POSIX!
此外,$()
允许您嵌套,这可能很方便.