当为变量扩展(例如${varname-default}
)提供默认值时,构成的字符将如何default
解释?
天真地,我会猜测变量替换(例如 $b)和类引号字符的扩展'
, "
,\
会发生在这种情况下……但似乎并不总是会发生类引号字符的扩展。
例如,
> echo x${a-''}y
xy
但
> echo x"${a-''}"y
x''y
我预计xy
在这两种情况下,因为扩展像${a-$PATH}
和这样的变量的构造( BRACE='}'; echo ${a-$BRACE} )
工作正常。
但是GNU bash, version 4.4.19(1)-release
,...两者的最新版本mksh
具有相同的行为,''
其中字面上包含在第二个示例的输出中。
扩充有
${parameter:-[word]}
几个扩充:来自man bash:
来自POSIX 规范:
两者报告相同,并且都不包括“引用删除”。
在完成整个变量的扩展后,引号将被删除。但是,很难准确说明这是如何完成的:
或者: