<Попередній | зміст | Наступна>
Розширення для керування пустими змінними
Кілька розширень параметрів призначені для роботи з неіснуючими і порожніми змінними. Ці розширення зручні для обробки відсутніх позиційних параметрів і призначення параметрам значень за замовчуванням.
${параметр:-слово}
If параметр не встановлено (тобто не існує) або порожнє, це розширення призводить до значення слово. Якщо параметр не є порожнім, розширення призводить до значення параметр.
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:-"замінити значення, якщо не встановлено"}
замінити значення, якщо не встановлено [me@linuxbox ~]$ echo $foo
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:-"замінити значення, якщо не встановлено"}
бар
[me@linuxbox ~]$ echo $foo
бар
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:-"замінити значення, якщо не встановлено"}
замінити значення, якщо не встановлено [me@linuxbox ~]$ echo $foo
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:-"замінити значення, якщо не встановлено"}
бар
[me@linuxbox ~]$ echo $foo
бар
${параметр:=слово}
If параметр не встановлено або порожнє, це розширення призводить до значення слово. Крім того, значення слово присвоюється параметр. Якщо параметр не є порожнім, розширення призводить до значення параметр.
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:="значення за замовчуванням, якщо не встановлено"}
значення за замовчуванням, якщо не встановлено [me@linuxbox ~]$ echo $foo значення за замовчуванням, якщо не встановлено [me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:="значення за замовчуванням, якщо не встановлено"}
бар
[me@linuxbox ~]$ echo $foo
бар
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:="значення за замовчуванням, якщо не встановлено"}
значення за замовчуванням, якщо не встановлено [me@linuxbox ~]$ echo $foo значення за замовчуванням, якщо не встановлено [me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:="значення за замовчуванням, якщо не встановлено"}
бар
[me@linuxbox ~]$ echo $foo
бар
Примітка: таким чином не можна призначити позиційні та інші спеціальні параметри.
${параметр:?слово}
If параметр не встановлено або порожнє, це розширення призводить до завершення сценарію з помилкою, а вміст слово посилаються на стандартну помилку. Якщо параметр не є порожнім, розширення призводить до значення параметр.
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:?"параметр пустий"}
bash: foo: параметр пустий [me@linuxbox ~]$ echo $?
1
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:?"параметр пустий"}
бар
[me@linuxbox ~]$ echo $?
0
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:?"параметр пустий"}
bash: foo: параметр пустий [me@linuxbox ~]$ echo $?
1
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:?"параметр пустий"}
бар
[me@linuxbox ~]$ echo $?
0
${параметр:+слово}
If параметр не встановлений або порожній, розширення нічого не приводить. Якщо параметр не порожній, значення слово замінюється параметр; однак значення параметр не змінено.
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:+"замінне значення, якщо встановлено"}
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:+"замінне значення, якщо встановлено"}
[me@linuxbox ~]$ foo=
[me@linuxbox ~]$ echo ${foo:+"замінне значення, якщо встановлено"}
[me@linuxbox ~]$ foo=бар
[me@linuxbox ~]$ echo ${foo:+"замінне значення, якщо встановлено"}
значення заміни, якщо встановлено
значення заміни, якщо встановлено