在编写shell脚本时,为了使脚步具有更大的灵活性,往往我们会在执行脚本时再去传递想要实现的参数,而不是在脚本中直接写死参数变量,但我们在做参数传递时需要注意,外部传入的参数变量不能放在function中进行判断,否则参数传递会失效,如下,在test.sh脚本中,假设我们需要先判断在执行脚本时是否传入了参数,如果传入了就将传入的参数赋值给a并输出,否则提示未传入参数:
if [ -n "$1" ]; then
a=$1
echo "传入的参数为:$a"
else
echo "未传入参数!"
fi
执行脚本
sh test.sh '我是传入的参数1'
数据结果为:
下面将脚本中的内容移植到function中
function main(){
if [ -n "$1" ]; then
a=$1
echo "传入的参数为:$a"
else
echo "未传入参数!"
fi
}
main
此时再执行脚本
sh test.sh '我是传入的参数1'
返回的结果为:
这表明在进行自变量参数传递时需要避免将传入的参数变量放置在函数中,建议将他们直接放在脚本头部。