函数参数已使用但未传递

时间:2015-04-14 00:10:34

标签: bash

如果我定义一个带参数的bash(或任何其他shell)函数会发生什么,但是在调用它时不传递参数?是否保证默认传递空字符串?

function test() {
  echo $1
}
test 

2 个答案:

答案 0 :(得分:2)

在这种情况下,$1unset。默认情况下,未使用的位置参数为unset,这与设置为null略有不同。如果您撰写了foo="",则$foo将为null

其中一个区别是,如果您设置unset shell属性(nounset),则引用set -o nounset参数将导致错误。

了解更多信息:

答案 1 :(得分:0)

选中此http://tldp.org/LDP/abs/html/othertypesv.html#EX17

  

如果脚本需要命令行参数但是没有调用该参数,则可能导致空变量赋值,通常是不合需要的结果。防止这种情况的一种方法是使用预期的位置参数向赋值语句的两侧追加一个额外的字符。