Última atividade 1744770145

Как указать в bash значение переменной по умолчанию

bash.md Bruto

Частенько требуется в 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