if [ -n "${BASH-}" -o -n "${ZSH_VERSION-}" ] ; then
hash -r 2>/dev/null
fi
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到关于此的参考?谢谢.
小智 19
a ${...}中的变量称为"参数扩展".在在线手册或实际手册中
搜索该术语(第792行).
该形式是在形式上相似.在扩展之前只有一行解释了差异(第810行):${var-}${var:-}:-
... bash测试未设置或为null的参数.省略冒号只会导致对未设置的参数进行测试.
因此,此形式仅在未设置变量(并且不为null)时进行测试,并替换${...}该值之后的整个扩展-,在本例中为null.
因此,${var-}变成:
''也是:因此:也是null.''如果未设置var ,则 - (在本例中为null )之后的值.所有这一切都是真的:
''当var未设置或为null时展开.因此,扩展不会改变var的值,也不会改变扩展,只是在shell nounset设置了选项时避免可能的错误.
此代码将停止使用$var:
#!/bin/bash
set -u
unset var
echo "variable $var"
[[ $var ]] && echo "var set"
Run Code Online (Sandbox Code Playgroud)
但是,此代码将运行没有错误:
#!/bin/bash
set -u
unset var
echo "variable ${var-}"
[[ ${var-} ]] && echo "var set"
Run Code Online (Sandbox Code Playgroud)
它是一个 bash 参数扩展,用于检查变量是否未设置
当您在 bash 脚本中使用${ZSH_VERSION-WORD}与 相反时,bash 将执行额外的逻辑$ZSH_VERSION
if $ZSH_VERSION is set
then
simply use the value of $ZSH_VERSION as per normal
elseif
$ZSH_VERSION is NOT set
then
use value of WORD - which isnt provided in your case - so null
Run Code Online (Sandbox Code Playgroud)
用来
文档中介绍了基本参数扩展man bash(bash 手册页第 939 行)。
请参阅:POSIX
另请参阅此答案
| 归档时间: |
|
| 查看次数: |
1761 次 |
| 最近记录: |