3

開発マシンにいくつかのサーバーがあります。私はそれらを実行するためのスクリプトをそれぞれ持っており、一度にいくつかの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
...

最初にgitブランチを出力し、値は変数にまったく割り当てられていないようです。どこが間違っているのかわからない

4

1 に答える 1

5

コマンドラインの結果を変数に割り当てるには、バッククォートまたは$(..)表記法を使用します。たとえば、コマンドラインが機能すると仮定すると、次のように使用できます。

git_branch=$(git branch|grep '*'|cut -c3-)

この表記は、読みやすく、エスケープする必要なしにネストできるため、バッククォートよりも適しています。

echo $(echo foo$(echo bar))

元のコードでは、grepより具体的にする必要があることに注意してください。アスタリスクは、grepにとって実際には「前のアトムの0個以上」を意味することを忘れないでください。したがって、これはより良いでしょう:

git_branch=$(git branch|grep '^[*]'|cut -c3-)
于 2012-12-04T05:17:37.877 に答える