【Linux学习笔记】28:位置参数变量

本节学习位置参数变量(预定义变量中的一类),位置参数变量可以向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 "用\$@看到所有的参数是 $@"

执行结果:

[root@bogon sh]# bash ok.sh 1 2 3 45 jd 12
所有参数的个数是 6$*看到所有的参数是 1 2 3 45 jd 12$@看到所有的参数是 1 2 3 45 jd 12

在这个例子中没有看到$*和$@的区别。

[3]$*和$@的区别

$*将所有参数看成一个整体,而$@将参数区别对待,可以用下面这个脚本的for循环来验证:

#!/bin/bash
for i in "$*"
        do
                echo "\$*: $i"
        done

for j in "$@"
        do
                echo "\$@: $j"
        done

执行结果:

[root@bogon sh]# bash ok.sh 1 2 3 45 jd 12
$*: 1 2 3 45 jd 12
$@: 1
$@: 2
$@: 3
$@: 45
$@: jd
$@: 12

注意这两个值使用时应当用双引号括起来,否则会发生变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值