如果我定义一个带参数的bash(或任何其他shell)函数会发生什么,但是在调用它时不传递参数?是否保证默认传递空字符串?
function test() {
echo $1
}
test
答案 0 :(得分:2)
在这种情况下,$1
为unset
。默认情况下,未使用的位置参数为unset
,这与设置为null
略有不同。如果您撰写了foo=""
,则$foo
将为null
。
其中一个区别是,如果您设置unset
shell属性(nounset
),则引用set -o nounset
参数将导致错误。
了解更多信息:
答案 1 :(得分:0)
选中此http://tldp.org/LDP/abs/html/othertypesv.html#EX17
如果脚本需要命令行参数但是没有调用该参数,则可能导致空变量赋值,通常是不合需要的结果。防止这种情况的一种方法是使用预期的位置参数向赋值语句的两侧追加一个额外的字符。