当前位置: 首页 > 面试题库 >

设置变量时找不到bash命令

松铭
2023-03-14
问题内容

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

因此,您必须删除前导$符号和周围的任何其他符号=

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

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

从命令替换:

第二种形式COMMAND对于Bash来说已经过时了,因为它在嵌套(需要转义“内部”反引号)和转义字符方面存在一些麻烦。使用$(COMMAND),它也是POSIX!

此外,$()还可以嵌套,这可能很方便。



 类似资料:
  • 问题内容: 我在修复此bash脚本中的错误时遇到问题,我真的不知道我做错了什么,感谢您的任何帮助,谢谢 问题答案: 在 之前和 之后 添加一个空格。

  • 问题内容: 我正在尝试通过nodeschool.io练习。我在运行他们的软件包时遇到了麻烦。 我安装的第一个软件包: 使用以下命令运行软件包 我尝试在其站点上安装的所有其他软件包,但无法在命令行中使用正确的命令运行该程序,例如: 这是我在示例中尝试安装的软件包的链接:functional-javascript- workshop 如您所见,我收到消息 查看其他存在类似问题的帖子,我运行以下命令以查

  • 我正在努力完成nodeschool.io练习。我在运行他们的包时遇到了麻烦。 我安装的第一个软件包: 使用命令 在他们的站点上,我尝试安装的每个其他软件包都无法使用命令行中的正确命令运行程序,例如: 下面是我试图在示例中安装的包的链接:functional javascript workshop 如您所见,我收到消息 查看其他有类似问题的帖子,我运行了以下命令以查看我的路径和保存包的位置: 我尝试

  • 问题内容: 抱歉,如果这是一个基本问题: 我一直在尝试按照此处的教程在笔记本电脑上设置Python 。在 PIP下,VIRTUALENV + VIRTUALENVWRAPPER 副标题表示 现在设置virtualenvwrapper: 2 $ export MSYS_HOME=/c/msys/1.0 3 $ source /usr/local/bin/virtualenvwrapper.sh 上面

  • 我正试图在终端更改我的命令promt。我不断得到错误: 我已经尝试过了,只需按如下方式将其键入终端:。我也在中试用过它 正如您可能能够看到/告诉,是的,我确实安装了自动完成,它确实工作得很好! 下面是更改后的错误输出: 注意:我也把别名移到了源下面,没有什么不同。我有git版本1.7.12.1 编辑10/13/12 不,我绝对不想自己定义__git_ps1,只是想看看这样做是否能识别它。是的,我已

  • 我在Windows 7机器上运行。 我安装了JavaJDK1.7。 我已经将Path和PATH环境变量设置为指向Javajdk 1.7/bin目录。 在命令提示符下执行,将生成java版本1.7.0_45。 然而,当我执行时,它会说: javac不被识别为内部或外部命令 我真的被这个问题难住了。所有其他线程似乎都通过更改环境变量解决了类似的问题,但这并不能解决我在这种情况下的问题。 当我在Cons