LINUX.ORG.RU

Case не выводит цвета

 ,


0

1

Доброго времен суток! По замыслу varC должна получить значение цвета. А по факту выводит цифру от 1 до 5. Гугл спрашивал - примеры с книжек по башу так же выдают цифру, а не значение. Что я делаю не так?

#!/bin/bash

var_RAND=$ echo $(( $RANDOM % 5 + 1 ))

case $var_RAND in
	"1") varC=red     ;;
	"2") varC=green   ;;
	"3") varC=yellow  ;;
	"4") varC=orange  ;;
	"5") varC=white   ;;
esac

echo $varC  

Это не $varC выводит цифру, а echo. Видимо, имелось в виду:

var_RAND=$(echo $(( $RANDOM % 5 + 1 )))

Но можно упростить до того, что привели выше.

xaizek ★★★★★
()
var=red;echo $var
red

вполне предсказуемое поведение, странно бы было, если бы вывел что-то другое

echo -e "\033[31m Hello World"

вот так выведет красным слова Hello World

и ты намудрил с присвоением, надо так:

var_RAND=$(( $RANDOM % 5 + 1 ))
IvanR ★★★
()
Последнее исправление: IvanR (всего исправлений: 1)
Ответ на: комментарий от mrn

спасибо! два дня глядел… офигеть….

Теперь все работает как надо, бегают онеко разных цветов, детеныш счастлив..

shTigrits ★★
() автор топика
Ответ на: комментарий от xaizek

Но можно упростить до того, что привели выше.

Сплошная безблагодатность. Вот старались, писали для людей, нет же, не хотят читать документацию, лепят значки куда не попадя. А потом плачут, что сложно. Ну не надо «$» у переменных (RANDOM) писать в $(()), если, конечно, это не $1 какой.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Большинство людей будут писать для единообразия с выражениями вне $(( )). Не вижу в этом ничего плохого.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Не вижу в этом ничего плохого

Плохо, что не видите, ибо это действительно из области «видеть» — арифметические выражения привычны, проще и быстрее читаются и понимаются когда они без нагромождений лишних сущностей. Даже при объявлении declare/local -i можно писать типа a=b+2 и оно будет и правильно работать и код приятнее.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.