shell入门第五讲
1、位置变量
位置变量指的是脚本(或者函数)后跟的第n个参数。我们这里暂时先讨论脚本传参的用法。
位置变量需要使用到形如 $1、$2、$3、$4、$5、$6。其中$1表示第一个参数,$2表示第二个参数,依次往后类推即可,我们来看看使用效果。
1.1、简单的脚本参数传递
先写个简单的脚本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第一个参数:$1" echo "第二个参数:$2" echo "第三个参数:$3"
我们写了这样的一个脚本,一共是传入三个参数,然后在脚本里面分别引用三个参数的值,现在来执行一下。
注意先赋予x权限
bash [root@localhost ~]# ./test.sh 11 22 33 第一个参数:11 第二个参数:22 第三个参数:33
我们使用 ./ 执行的时候,分别在脚本后面传入11、22、33这三个数值,然后在脚本内部我们已经提前定义好了引用变量,那么在执行的时候就可以把三个参数的值打印出来。
1.2、位置变量控制
使用shift关键字可以实现对位置变量的控制,比如我们写个脚本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第一个参数:$1" shift echo "第二个参数:$2" echo "第三个参数:$3"
现在来执行一下,这次我们传入四个参数
bash [root@localhost ~]# ./test.sh 11 22 33 44 第一个参数:11 第二个参数:33 第三个参数:44
喔?我们发现打印的结果中,第二个参数居然是33,然而我们传参的时候的22这个参数并没有引用到,这就是shift的作用,每执行依次shift命令,位置变量个数就会减一,而变量值则提前一位。
当然也可以设置移动n位,我们不必写上n个shift命令,而直接使用shift n即可,比如:bash [root@localhost ~]# cat test.sh!/bin/bashshift 3 echo "第一个参数:$1" echo "第二个参数:$2" echo "第三个参数:$3"
再来执行一下
bash [root@localhost ~]# ./test.sh 11 22 33 44 55 66 第一个参数:44 第二个参数:55 第三个参数:66
使用shift n,那么位置变量向前移动n位,因此我们的结果是从第四个参数开始引用的,大家都学会了嘛?
1.3、注意事项
当然小伙伴可能会问 $0 表示什么呢?我们来执行一下看看,还是先写个脚本bash [root@localhost ~]# cat test.sh!/bin/bashecho "第0个参数:$0" echo "第一个参数:$1" echo "第二个参数:$2" echo "第三个参数:$3"
执行一下看看
bash [root@localhost ~]# ./test.sh 11 22 33 第0个参数:./test.sh 第一个参数:11 第二个参数:22 第三个参数:33
或者使用bash执行看看
bash 第三个参数:33 [root@localhost ~]# bash test.sh 11 22 33 第0个参数:test.sh 第一个参数:11 第二个参数:22 第三个参数:33
发现他们两个共同点就是,$0表示执行的文件名本身,我想这里大家应该都明白了吧?
还有一个注意点就是:我们使用$1、$2…像这样的传递的参数引用时,从第10个开始我们要加上花括号来调用,比如:${10}、${11},一定要加上花括号!!!