如何将grep的值分配给变量并与字符串连接?

Ran*_*dra 3 bash shell grep

我的开发机器上有几台服务器.我有一个脚本来运行它们,我一次只在几个git分支上工作.因此,每当我运行运行服务器的脚本时,我希望它打印哪个服务器从哪个git分支尝试以不同的颜色运行.

这是我的,但它没有正常工作.

git_branch= git branch|grep '*'|cut -c3-
echo -e "\e[1;33;40m Running API server on git branch  $git_branch \e[0m"
...
REST_OF_THE_CODE_THAT_RUNS_THE_DEV_SERVER
...
Run Code Online (Sandbox Code Playgroud)

它首先打印git分支,似乎根本没有将值赋给变量.我无法弄清楚我哪里出错了

gho*_*oti 5

要将命令行的结果分配给变量,请使用反引号或$(..)表示法.例如,假设您的命令行有效,您可以使用:

git_branch=$(git branch|grep '*'|cut -c3-)
Run Code Online (Sandbox Code Playgroud)

这种表示法比反引号更可取,因为它更易于阅读,并且允许嵌套而不需要转义:

echo $(echo foo$(echo bar))
Run Code Online (Sandbox Code Playgroud)

请注意,在原始代码中,您grep应该更具体.请记住,星号真的意味着"前一个原子的零或更多",grep.所以这会更好:

git_branch=$(git branch|grep '^[*]'|cut -c3-)
Run Code Online (Sandbox Code Playgroud)