设置variables时找不到bash命令

我正在写一个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=stringvar=$(command)定义变量。

所以你必须删除前面的$和任何其他的标志=

 tag_name="proddeploy-$(date +"%Y%m%d_%H%M")" deploy_date=$(date +"%Y%m%d_%H%M") ^^ ^ 

从命令替换 :

Bash的第二种形式`COMMAND`已经或多或少过时了,因为它在嵌套(“内部”反斜杠需要被转义)和转义字符方面有些麻烦。 使用$(COMMAND) ,这也是POSIX!

此外, $()允许你嵌套,这可能是方便的。