Bash - 设置一个变量

Kev*_*vin 0 bash assignment

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

#!/usr/bin/env bash

GITNAME= git config --global user.name
echo " $GITNAME "
Run Code Online (Sandbox Code Playgroud)

但它似乎不是这样工作的。

它是如何工作的?

Eri*_*ouf 7

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

GITNAME="$(git config --global user.name)"
printf '%s\n' "$GITNAME"
Run Code Online (Sandbox Code Playgroud)

另请注意,=分配中的之后没有空格。正如 sjsam 指出的那样,最好在括号周围引用。那是因为在命令替换后单词拆分和 glob 扩展以及其他几个解析步骤仍然会发生,所以如果你的名字包含,说*glob 将被扩展,这可能不是你想要的。

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


sjs*_*sam 6

几个建议

下面有什么问题

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

更正的陈述

gitname="$(git config --global user.name)" # Error proof
Run Code Online (Sandbox Code Playgroud)