我正在写一个shell脚本,我设置了几个variables,其值是命令的输出。
我得到的错误是:
$ $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
但是在任何情况下,命令输出都正在执行。 我如何使它停止执行命令输出,只是作为一个variables存储? 我需要这个在ZSH和BASH上工作。
您可以使用var=string
或var=$(command)
定义变量。
所以你必须删除前面的$
和任何其他的标志=
:
tag_name="proddeploy-$(date +"%Y%m%d_%H%M")" deploy_date=$(date +"%Y%m%d_%H%M") ^^ ^
从命令替换 :
Bash的第二种形式
`COMMAND`
已经或多或少过时了,因为它在嵌套(“内部”反斜杠需要被转义)和转义字符方面有些麻烦。 使用$(COMMAND)
,这也是POSIX!
此外, $()
允许你嵌套,这可能是方便的。