bash.md
· 1.7 KiB · Markdown
Неформатований
Частенько требуется в 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)
Частенько требуется в 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