Частенько требуется в bash скрипте указать значение переменной по умолчанию, например если не задано прямо.. Однако не все так просто... Краткий списочек с описанием логики. ```bash # bash one liner # -------------- x="foo" && echo "${x:-bar} (x = $x)" # foo (x = foo) x="" && echo "${x:-bar} (x = $x)" # bar (x = ) unset x && echo "${x:-bar} (x = $x)" # bar (x = ) x="foo" && echo "${x-bar} (x = $x)" # foo (x = foo) x="" && echo "${x-bar} (x = $x)" # (x = ) unset x && echo "${x-bar} (x = $x)" # bar (x = ) x="foo" && echo "${x:=bar} (x = $x)" # foo (x = foo) x="" && echo "${x:=bar} (x = $x)" # bar (x = bar) unset x && echo "${x:=bar} (x = $x)" # bar (x = bar) x="foo" && echo "${x=bar} (x = $x)" # foo (x = foo) x="" && echo "${x=bar} (x = $x)" # (x = ) unset x && echo "${x=bar} (x = $x)" # bar (x = bar) x="foo" && echo "(x = $x)" && echo "${x:?error message}" # (x = foo) foo x="" && echo "(x = $x)" && echo "${x:?error message}" # (x = ) bash: x: error message unset x && echo "(x = $x)" && echo "${x:?error message}" # (x = ) bash: x: error message x="foo" && echo "${x:+bar} (x = $x)" # bar (x = foo) x="" && echo "${x:+bar} (x = $x)" # (x = ) unset x && echo "${x:+bar} (x = $x)" # (x = ) ``` Опубликовано в [gitgate](https://t.me/gitgate)