WLI*_*ION 7 shell scripting bash
我是 shell 脚本的新手,我遇到了这些表达式
${var:-val} 和 ${var-val}
${var:+val} 和 ${var+val}
${var:=val} 和 ${var=val}
那么它们是如何评估的,它们之间有什么区别
这些都是具有替代方案的各种形式的参数扩展:
${var:-val}由valifvar未设置或 null替换,${var}否则(val“默认值”也是如此);${var:=val}首先分配val给varif varis unset 或 null,然后(在所有情况下)被替换为${var};${var:+val}被替换什么,如果var是设置或为空,val否则。省略:掉所有这些定义的“或空”部分。
这在bash(1)联机帮助页和POSIX 中都有描述。
一些例子可能会有所帮助:
unset a
echo "${a:-default}"
Run Code Online (Sandbox Code Playgroud)
产生default,就像echo "${a-default}".
a=
echo "${a:-default}"
Run Code Online (Sandbox Code Playgroud)
再次产生default,但echo "${a-default}"输出一个空行。
a=test
echo "${a:-default}"
Run Code Online (Sandbox Code Playgroud)
产生test,就像echo "${a-default}".
unset a
echo "${a:=default}"
Run Code Online (Sandbox Code Playgroud)
产生default,a现在是default(由 确认echo "${a}")。
这种+形式可能看起来很奇怪,但在分几个步骤构造变量时它很有用:
PATH="${PATH}${PATH:+:}/blah/bin"
Run Code Online (Sandbox Code Playgroud)
仅在非空时才会添加:before ,从而避免路径以./blah/binPATH:
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |