11.9转让
在一行中设置多个变量时,请注意评估未定义。例如“foo=1 foo=2;echo$foo’给予'1'使用Solaris 10/垃圾桶/桶
,但'2“用巴什。你必须使用‘;'强制执行命令:'foo=1;foo=2;echo$foo”。
不要依赖以下内容来查找子目录/程序:
PATH=细分$PATH_SEPARATOR$PATH程序
因为这不适用于Zsh 3.0.6。使用这样的东西而是:
(PATH=subdir$PATH_SEPARATOR$PATH;导出路径;执行程序)
不要依赖赋值的退出状态:灰分0.2不变并传播最后一条语句的状态:
$false|foo=bar;echo$?1$false | | foo=`:`;echo$?0
更糟糕的是,QNX 4.25只是设置退出状态在任何情况下均为0:
要指定默认值,请遵循以下算法:
- 如果默认值是文本并且不包含任何结束符支架,使用:
- 如果默认值不包含右大括号,则必须展开,并且正在初始化的变量不是IFS-split(即,它不是列表),然后使用:
- 如果默认值不包含右大括号,则必须展开,并且正在初始化的变量旨在进行IFS-split(即,它是一个列表),然后使用:
- 如果默认值包含右大括号,则使用:
test${var+y}|var=“有一个'}'”
在大多数情况下var=${var=“$default”}“很好,但如果如果有疑问,只需使用最后一个表格。请参阅外壳替换,个项目‘${无功功率,无功功率:-价值}'和'${无功功率,无功功率=价值}’基本原理。