位置变量、参数用法详解,位置参数变量作用,$,#,*,$1,$2等详解和例子
文章目录
- 总结
前言
位置变量:在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数
位置参数变量作用
- 1 , . . . 对 应 第 1 个 、 第 2 个 等 参 数 , 参 数 个 数 超 过 10 个 时 , 就 要 用 大 括 号 把 这 个 数 字 括 起 来 , 例 如 , 1, ... 对应第1个、第2个等参数,参数个数超过 10 个时,就要用大括号把这个数字括起来,例如,1,...对应第1个、第2个等参数,参数个数超过10个时,就要用大括号把这个数字括起来,例如,{10} 代表第 10 个参数,${14} 则代表第 14 个参数
- $0 代表命令行本身,包括路径
- $* 传递给脚本的所有参数,全部参数合为一个字符串
- $@ 传递给脚本的所有参数,每个参数为独立字符串
- $# 传递给脚本的参数的个数
[root@zaishu pic]# ls 001.jpg 010.jpg 011.jpg 100.jpg 101.jpg 111.jpg
对于这条命令,$0 的值就是 ls ,$1 的值就是 001.jpg,$2 是010.jpg,$3 是011.jpg,一次类推。
例子
位置参数变量用于向命令或程序脚本中传递信息,例如如下例子,写一个计算器:
[root@zaishu sh]# cat calc.sh
# ------------------------------------------
# Filename: calc.sh
# Version: 1.1
# Date: 2021/01/01
# Author: shuge
# Email: 123@mail.com
# Website: www.zaishu.cn
# Description: This is the calc script
# Copyright: shuge
# License: GPL
# ------------------------------------------
n1=$1
n2=$2
sum=$(($n1+$n2))
echo $sum
在 Shell 中,数值运算可参照后面内容,演示效果:
[root@zaishu sh]# ./calc.sh 1 2 //把第一个参数和第二个参数相加
3
$* $@ $# 示例
还有几个位置参数变量是干什么的呢?我们再写一个脚本来说明一下,如下:
# ------------------------------------------
# Filename: param.sh
# Version: 1.1
# Date: 2021/01/01
# Author: shuge
# Email: 123@mail.com
# Website: www.zaishu.cn
# Description: This is the param script
# Copyright: shuge
# License: GPL
# ------------------------------------------
echo "total of $# parameters" //$#代表参数个数,不包含命令
echo "The parameters is: $*" //代表所有参数,不包含命令
echo "The parameters is: $@" //代表所有参数,不包含命令
[root@zaishu sh]# ./param.sh 11 22 aa
total of 3 parameters
The parameters is: 11 22 aa
The parameters is: 11 22 aa
$*和$@的区别
$* 会把接收到的所有参数当成一个整体对待,$@ 会区别对待接收到的所有参数。
[root@zaishu sh]# cat param2.sh
# ------------------------------------------
# Filename: param2.sh
# Version: 1.1
# Date: 2021/01/01
# Author: shuge
# Email: 123@mail.com
# Website: www.zaishu.cn
# Description: This is the param2 script
# Copyright: shuge
# License: GPL
# ------------------------------------------
echo '$* print'
for i in "$*"
do
echo "The parameters is: $i"
done
echo '$@ print'
for y in "$@"
do
echo "The parameter$x is: $y"
done
[root@zaishu sh]# ./param2.sh 11 22 33 44
$* print //将所有参数作为一个整体进行打印,只循环一次
The parameters is: 11 22 33 44
$@ print //将所有参数单独处理,循环了4次
The parameter is: 11
The parameter is: 22
The parameter is: 33
The parameter is: 44
总结
Shell位置变量和参数用法详解,位置参数变量作用,$,#,*,$1,$2等详解和例子