LINUX.ORG.RU

bash. странный результат if {} else {}


0

1

привет.

встретил на просторах инета такой синтаксис записи условий bash(хз как он зовется)

var=0

[[ $var == 0 ]] && {
	echo "var = 0";
} || [[ $var == 1 ]] && {
	echo "var = 1";
} || [[ $var == 2 ]] && {
	echo "var = 2";
} || {
	echo "var = 3";
}

и решил потренироваться.

но этот код дает странный вывод. в данном случае:

var = 0

var = 1

var = 2

что-то я смотрю-смотрю... и никак не фкурю чего оно от меня хочет %)

подскажите, от чего такой странный вывод, и как условие нужно записать, чтоб код корректно работал?

благодарен.

★★★

Получается следующая конструкция:
[[ $var == 0 ]] && echo «var = 0» || [[ $var == 1 ]] && echo «var = 1» || [[ $var == 2 ]] && echo «var = 2» || echo «var = 3»
1) $var == 0 и сообщить «var = 0»
2) $? = 0, пропускаем блок «||»
3) Дошли до блока «&&», выполняем: сообщить «var = 1»
...
До блока - сообщить «var = 3» - дело не доходит, т.к. к моменту его предполагаемого выполнения $? всё ещё равна 0, и блок «||» не выполняется.

AITap ★★★★★
()

if ... else так и надо писать как if else

а так ты в else-блоке проверяешь код возврата последней команды в соотв. if-блоке

такой синатксис допустим без else блока

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