我正在编写一个shell脚本,我设置的变量很少,其值是命令的输出。
我得到的错误是:
$ $tag_name="proddeploy-$(date +"%Y%m%d_%H%M")"
-bash: =proddeploy-20141003_0500: command not found
现在,我确实阅读了other similar questions并在此基础上尝试了各种各样的事情:
$ $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。
答案 0 :(得分:5)
您可以使用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!
此外,$()
允许您嵌套,这可能很方便。