每天学习一点shell系列(2)—函数的参数传递
参考博客:shell 脚本-10函数_eno_zeng的博客-CSDN博客
- $n 或 ${n} :函数内使用 $n 或 ${n} 访问对应的参数, 数字代表参数的前后顺序, $1 代表第一个参数, $2 代表第三个参数, $n 代表第n个参数;当n>=10时,需要使用${n}来获取参数。
- $# :使用 $# 获取参数的个数;
- $* 和 $@ :使用 $* 和 $@ 获取所有的参数;
- {}:使用花括号{}来明确变量的边界,特别是在变量名后面紧接着其他字符的情况下;
1)示例代码
useParams () {
echo "参数1: $1"
echo "参数2: $2"
echo "参数3: ${3}"
echo "参数个数: $#"
echo "所有参数: $*"
}
useParams 1 2 3 4 s
2)执行结果
参数1: 1
参数2: 2
参数3: 3
参数个数: 5
所有参数: 1 2 3 4 s
3)注意事项
$10 不能获取第十个参数,获取第十个参数需要${10}。
当n>=10时,需要使用${n}来获取参数。
例如:在.sh文件中使用以下脚本:
/data/miniconda3/envs/env-3.6.8/bin/python get_goods_picture_and_feature_all.py $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
当传入以下参数时:
dianshang.mdb.mig x2 x3 x4 x5 x6 x7 x8 20 200000"
传入的第10个参数不是200000,而是第1个参数和字符串'0'——‘dianshang.mdb.mig0’
正确的打开方式如下:
/data/miniconda3/envs/env-3.6.8/bin/python get_goods_picture_and_feature_all.py $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}