Команда if без аргументов проверяет значение переменной $test, как если бы вместо
if commandвыполнялось
if $test commandА команда else наоборот, проверяет инверсию переменной $test. Но не меняет значение $test. И все что после нее выполняется если $test=0.
Соответственно, такие строки приводят к никогда не выполняющимся командам:
if else command1 else if command2В отличие от многих других языков команды if и else не связаны друг с другом синтаксически и могут быть записаны как в порядке if + else:
if expr command1 else command2так и в порядке else + if:
else command1 if expr command2И еще одно неожиданное отличие этих команд от других языков - обе альтернативы могут быть выполнены, если вторая команда будет выполняться при подходящем состоянии переменной $test, например как в этом коде:
i 1 w "if",! i 0 e w "else",!Для страхования от выполнения команды else после выполнения альтернативы соответствующей if нужно ставить в конце первой последовательности команд
i 1Это взведет переменную $test в состояние 1 и альтернатива else не будет выполняться. А переменная $test да, может быть изменена, например командами с таймаутом. Или другой (вложенной) командой if.
Комментариев нет:
Отправить комментарий