Bash - 设置变量

Bash - 设置变量

我需要在 bash 脚本中设置一个变量

#!/usr/bin/env bash

GITNAME= git config --global user.name
echo " $GITNAME "

但似乎并非如此。

它是如何工作的?

答案1

假设您尝试执行git命令并将其结果存储在变量中,您将需要语法$(...),将命令放在括号内:

GITNAME="$(git config --global user.name)"
printf '%s\n' "$GITNAME"

=另请注意,作业中的后面没有空格。正如 sjsam 指出的那样,最好也在括号周围引用。这是因为在命令替换之后,分词和全局扩展以及其他几个解析步骤仍然会发生,因此如果您的名称包含在内,那么*全局将被扩展,而这可能不是您想要的。

作为风格说明,您通常不应使用全部大写的变量名称,因为这可能会导致它们与环境变量发生冲突。

答案2

几个建议

下面有什么问题

GITNAME= git config --global user.name
  • 不要在脚本中使用全大写变量,因为它们可能与具有相似名称的系统变量冲突
  • =表格周围不应有空格variable=value
  • 在您的情况下,右侧是一个表达式,因此您需要将其用反引号括起来(``) 它告诉 shell 它包含一个命令并且应该用结果替换。
  • 现在,反引号是遗留的,您可以使用[更有能力] $()而不是他们。
  • 最后双引号命令替换以防止[分词]

更正的陈述

gitname="$(git config --global user.name)" # Error proof

答案3

要将命令的输出保存为变量bash,请使用命令替换$()

GITNAME="$(git config --global user.name)"

请注意,在 中,变量声明bash周围不能有任何空格。=

另外,请注意大写变量命名,因为它可以替换具有相同名称的任何环境变量(通常为大写)。除非绝对必要,否则对用户定义的变量使用小写字符。

另一方面,如果您只需将字符串保存为变量:

GITNAME="git config --global user.name"

相关内容