2015-04-29 68 views
0

(使用zsh)我只是試圖在我的終端中打開一個新選項卡時獲得隨機顏色輸出。要做到這一點,我寫了下面的shell腳本,但它不是按預期工作:從函數獲取值,使用該值在shell中獲取彩色輸出

#Standard Colors 
red='\033[0;31m' 
NC='\033[0m' # No Color 
black='\033[0;30m' 
blue='\033[0;34m' 
green='\033[0;32m' 
cyan='\033[0;36m' 
purple='\033[0;35m' 
yellow='\033[1;33m' 
lgreen='\033[1;32m' 
lblue='\033[1;34m' 
lred='\033[1;31m' 
lcyan='\033[1;36m' 
#Array color 
colr=(red blue green cyan purple yellow lgreen lblue lred lcyan) 

#Get random number for colors 
randcolr() 
{ 
    sz=${#colr[@]} 
    randval=$(((RANDOM % sz) + 1)) 
    echo "${colr[randval]}" 
} 

echo -e "$(randcolr)TESTING" 

而不是獲得彩色輸出,它寫了顏色的名稱和「測試」如lgreenTESTING。任何幫助?(我正在使用zsh)

功能randcolr始終給終端內部相同的值。

+0

你在使用'爲內部'randcolr()'sz'?好的,現在你編輯了我看到的代碼。 – malfunctioning

回答

2

當你定義數組,你使用的字符串,而不是變量:

colr=(red blue green cyan purple yellow lgreen lblue lred lcyan) 

應該是:

colr=($red $blue $green $cyan $purple $yellow $lgreen $lblue $lred $lcyan) 
+0

或者,使用'$ {(P)$(randcolr)}'擴展由'randcolr'的輸出命名的變量。 – chepner