【Linux学习笔记】28:位置参数变量
程序员文章站
2022-03-09 14:26:37
...
本节学习位置参数变量(预定义变量中的一类),位置参数变量可以向Shell脚本中传递各个位置的参数。
[1]$n
它最主要的作用是向脚本里传递参数值,假如有这样一个脚本(既没有写东西也没赋予权限,但假设它能用):
那么在这样运行脚本时,就会把”./test1.sh”、”11”、”22”分别赋给$0、$1和$2,用这种方式就可以给脚本传值了。
*测试$n
[root@bogon sh]# vi ok.sh
进入编辑器,书写代码:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
#用$双小括号做求值运算
echo $sum
解释执行验证传参:
[root@bogon sh]# bash ok.sh 12 34
46
上面的脚本还可以简化:
#!/bin/bash
sum=$(($1+$2))
echo $sum
用这种方式还存在一个缺陷,就是如果不是脚本的开发者,我怎么知道要向脚本中传递什么顺序、什么样的值,即不了解参数表就没法去使用脚本。所以这种方式更适合给脚本的编写者来用,而不适合去给其它用户,后面会学习read来应对这种情况。
[2]其它位置参数变量
修改脚本:
#!/bin/bash
echo "所有参数的个数是 $#"
echo "用\$*看到所有的参数是 $*"
echo "用\aaa@qq.com看到所有的参数是 aaa@qq.com"
执行结果:
[root@bogon sh]# bash ok.sh 1 2 3 45 jd 12
所有参数的个数是 6
用$*看到所有的参数是 1 2 3 45 jd 12
用aaa@qq.com看到所有的参数是 1 2 3 45 jd 12
在这个例子中没有看到$*和$@的区别。
[3]$*和$@的区别
$*将所有参数看成一个整体,而$@将参数区别对待,可以用下面这个脚本的for循环来验证:
#!/bin/bash
for i in "$*"
do
echo "\$*: $i"
done
for j in "aaa@qq.com"
do
echo "\aaa@qq.com: $j"
done
执行结果:
[root@bogon sh]# bash ok.sh 1 2 3 45 jd 12
$*: 1 2 3 45 jd 12
aaa@qq.com: 1
aaa@qq.com: 2
aaa@qq.com: 3
aaa@qq.com: 45
aaa@qq.com: jd
aaa@qq.com: 12
注意这两个值使用时应当用双引号括起来,否则会发生变化。
上一篇: 5.shell的shift参数
推荐阅读
-
荐 javascript从入门到跑路-----小文的js学习笔记(17)------动态属性、复制变量值、传递参数和检测类型
-
Linux学习记录---位置环境变量
-
Linux shell编程学习笔记(二) 变量
-
【js高程学习笔记】关于变量值和函数参数
-
Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量
-
【linux系统编程学习笔记】第十三节:线程的安全机制3(条件变量)(pthread_cond_wait、pthread_cond_signal、pthread_cond_broadcast)
-
【Linux学习笔记】26:环境变量
-
linux学习笔记:xargs多参数处理
-
csapp学习笔记(变量在内存中的位置)
-
荐 javascript从入门到跑路-----小文的js学习笔记(17)------动态属性、复制变量值、传递参数和检测类型