конструкция case, kapitonz, 09-Июл-07, 10:54 [смотреть все]Ребяты помогите плиз, уже почти все перепробывал: пример case var1 in <1-5>) echo qqqq ;; <6-10>) echo www ;; esac В текущем примере когда выбираешь от 1 до 5ти выводится qqq, когда от 6 до 10 выводится www. Все работает, НО при следующей записи: a=1 b=5 c=6 d=10 case var1 in <$a-$b>) echo qqqq ;; <$c-$d>) echo www ;; esac Уже ни чего не работает, и выводится следующая ошибка ./test.sh:6: parse error near `<' Все делается под zsh. Перепробывал почти все ковычки служебные знаки, ни чего не изменяется. Написано вроде нужно переменные брать в (), результат тот же. Как бы использовать переменные в строках выбора конструкции case. ? спасибо.
|
- конструкция case, phpcoder, 11:43 , 09-Июл-07 (1)
[...] >a=1 >b=5 >c=6 >d=10 >case var1 in ><$a-$b>) >echo qqqq >;; ><$c-$d>) >echo www >;; >esac [...]Я бы использовал if и не заморачивался :) if [ $var1 -ge $a -a $var1 -le $b ]; then ... elif [ $var1 -ge $c -a $var1 -le $d ]; then .. fi
- конструкция case, vic, 12:32 , 09-Июл-07 (2)
>Ребяты помогите плиз, уже почти все перепробывал: пример >case var1 in ><1-5>)echo qqqq ;; ><6-10>) echo www ;; >esac >В текущем примере когда выбираешь от 1 до 5ти выводится qqq, когда >от 6 до 10 выводится www.Пример не работает, должны быть квадратные скобки, а не угловые. С переменными при использовании квадратных скобок (см. man bash, это ведь pattern): #!/bin/bash a=1 b=5 c=6 d=10 case var1 in [$a-$b]) echo qqqq ;; [$c-$d]) echo www ;; esac работает (Linux, bash --version: 3.1.17)
- конструкция case, kapitonz, 12:52 , 09-Июл-07 (3)
И правда, с квадратными все ок! спасибо.
|