Форум — Development Проверить существование параметра в case bash 0 1 Как проверить существование параметра в case? Ссылка
Как-то мутно вопрос сформулирован. > VAR="" ~ > case $VAR in ~ "") echo OK;; *) echo NOT OK;; esac OK > print $VAR ~ Так? Homura_Akemi ★ (18.12.12 17:44:11 MSK) Показать ответ Ссылка
а точно ли нужен case ? [ $myvar ] && do_something_good || do_something_evil Khan (18.12.12 18:40:21 MSK) Ссылка
Ответ на: комментарий от Homura_Akemi 18.12.12 17:44:11 MSK Оу, немного не очевидно вышло. Короче, если VAR не будет задана вообще, то это тоже сработает. Homura_Akemi ★ (18.12.12 18:58:50 MSK) Ссылка
if [ «x$var» == «x» ]; then echo var not set; fiВ шелле емнип нет разницы между «переменная не задана» и «переменная пуста» marvin_yorke ★★★ (18.12.12 21:13:31 MSK) Показать ответ Ссылка
Для Bourne-подобных case ${var-unset} in unset ) echo unset ;; "") echo empty ;; a ) echo a ;; * ) echo default ;; esac at ★★ (18.12.12 23:09:03 MSK) Последнее исправление: at 18.12.12 23:09:53 MSK (всего исправлений: 1) Показать ответы Ссылка
Ответ на: комментарий от marvin_yorke 18.12.12 21:13:31 MSK В bash'е разница есть. Если переменная пуста, то «set» её покажет, а если не задана, или удалена через «unset», то «set» её не покажет.И в конструкци «${var:-DEFAULT}» и ей подобных, с двоеточием разницы между «пуста» и «не задана» не будет, а без двоеточия будет.P.S. Чего хотел ТС я не понял mky ★★★★★ (19.12.12 00:02:21 MSK) Показать ответ Ссылка
Ответ на: комментарий от at 18.12.12 23:09:03 MSK Спасибо, это и нужно было. Kindly_Cat ☆ (19.12.12 08:30:36 MSK) автор топика Ссылка
Ответ на: комментарий от mky 19.12.12 00:02:21 MSK Я имел в виду разницы при обращении к такой переменной - в обоих случаях вернется пустая строка marvin_yorke ★★★ (19.12.12 08:30:57 MSK) Ссылка
Ответ на: комментарий от at 18.12.12 23:09:03 MSK Я так понял, между unset и «» разницы нет? Kindly_Cat ☆ (19.12.12 08:31:20 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Kindly_Cat 19.12.12 08:31:20 MSK Есть. isset () { case ${var-unset} in unset ) echo unset ;; "") echo empty ;; a ) echo a ;; * ) echo default ;; esac } isset # var не определена: unset var= isset # var определена, но пустая: empty unset var isset # определение удалено: unset at ★★ (19.12.12 09:32:41 MSK) Показать ответ Ссылка
Ответ на: комментарий от at 19.12.12 09:32:41 MSK А переданный скрипту параметр (аргумент) может ли быть неопределённым? Даже если никакой параметр не был передан, он будет пустым, не? Kindly_Cat ☆ (19.12.12 09:37:57 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Kindly_Cat 19.12.12 09:37:57 MSK зависит от set -u at@home:~$ echo $var bash: var: unbound variable at@home:~$ set +u at@home:~$ echo $var Я её включаю, чтобы избежать ошибок val=1 echo $var at ★★ (19.12.12 09:42:43 MSK) Показать ответ Ссылка
Ответ на: комментарий от at 19.12.12 09:42:43 MSK Благодарю, теперь всё ясно. Kindly_Cat ☆ (19.12.12 09:43:30 MSK) автор топика Ссылка