2012-12-04 74 views
3

我的開發機器上有幾臺服務器。我有一個腳本可以運行它們,我一次只能在幾個git分支上工作。所以,無論何時運行運行服務器的腳本,我都希望它能夠打印出哪個服務器從哪個分支的git中嘗試以不同的顏色運行。如何將grep的值分配給變量並與字符串連接?

這是我有,但它不正常工作。

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分支和價值似乎並沒有在所有賦值給變量。我無法確定我要出錯的地方

回答

5

要將命令行的結果賦值給變量,請使用反引號或$(..)表示法。例如,假設您的命令行工作的,你可以使用:

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

這種表示法是最好的反引號,因爲它更易於閱讀,並允許嵌套無需逃避的東西:

echo $(echo foo$(echo bar)) 

注在您的原始代碼中,您的grep應該更具體。請記住,星號真的意味着「零個或多個以前的原子」,以grep。所以這會更好:

git_branch=$(git branch|grep '^[*]'|cut -c3-) 
相關問題