每天学习一点shell系列(2)—函数的参数传递

2023-12-13 12:24:30

参考博客: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}

文章来源:https://blog.csdn.net/happyhuidi/article/details/128144723
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。