shell脚本学习(六)——特殊参数

1 位置参数

#!/bin/bash
echo $1,$2

在这里插入图片描述
注意:当有两个$符号时,只能接受两个参数,后面输入的不会被接收;
如果用双引号括起来则代表一个参数。

多个参数

#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19

在这里插入图片描述
注意:位置参数的数字大于9时,输出的内容就会出错,因为解释器会把10当作0和1两个数字来对待,故当位置参数的数字大于9时,需要用花括号将数字括起来。

#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} ${16} ${17} ${18} ${19}

在这里插入图片描述

2 获取脚本的名称及路径

#!/bin/bash
echo $0

在这里插入图片描述
注意:在使用$0时:
(1)如果使用相对路径来执行脚本时,输出结果就是脚本名字;
(2)如果使用绝对路径来执行脚本时,那么输出结果就是绝对路径加上脚本名。

#!/bin/bash
dirname	$0
basename $0

在这里插入图片描述
若不带路径执行脚本,输出结果为".",表示当前路径;
若使用绝对路径来执行脚本,输出结果就是脚本的绝对路径。

3 获取脚本传参的个数

#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
echo $#

在这里插入图片描述
在这里,我们传递了26个参数,但是由于我们在脚本中只设置了接受了10个参数,故只接收了了9个变量,所以最后打印了9个字符。

4 set设置位置参数

set -- 参数

在这里插入图片描述

5 $*和$@的对比

#!/bin/bash
foo(){
	echo $*
}

bar(){
	echo $@
}

foo 1 2 3 4
bar 1 2 3 4

在这里插入图片描述
相同点:$*和$@都表示参数列表中所有的参数

#!/bin/bash
test(){
	echo "未加引号,二者相同"
	echo $*
	echo $@
	echo "加入引号后的比较"
	echo "----------"
	for N in "$*"
	do 
		echo $N
	done
	echo "##########"
	for N in "$@"
	do
		echo $N
	done

}
test 44 55 66

在这里插入图片描述
不同点:当$*和$@被双引号包含时,$*会将所有的参数作为一个整体输出,而$@会将参数分开输出。

6 shift造成参数变量号码偏移

shift命令用于对于参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数,然后进行相应处理。

#!/bin/bash

while [ $# != 0 ];do
echo "第一个参数为:$1,参数的个数为:$#"
shift
done

在这里插入图片描述
shift命令每执行一次,变量的个数就减一;

7 $?获取函数的返回值

当一个进程执行完毕后,该进程会提供一个退出码(一个整数)表明它准备退出的原因。类似于布尔变量,0表示成功,当我们执行echo $?时返回的值就是进程的结束码,这个结束码由刚刚执行完的进程提供给系统内核的。

#!/bin/bash
if [ "$1' == 50 ]
then
	exit 0   #参数正确 退出状态为0
else
	exit 1   #参数不正确 退出状态为1
fi

在这里插入图片描述$?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值。

#!/bin/bash
add(){
	return `expr $1 + $2`
	
}
add 50 100
echo $?     

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值