2015-04-29 5 views
0

(Использование zsh) Я просто пытаюсь получить случайный цветной вывод, когда открываю новую вкладку в моем терминале. Для достижения этой цели я написал следующий скрипт, но он не работает, как ожидалось:Получение значения из функции, используйте это значение для получения цветного вывода в оболочке

#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

Что вы используете 'sz' для внутренней' randcolr() '? Хорошо, теперь, когда вы редактировали свой код, я вижу. – 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