接下来我们来看一下位置变量,上一节讲的是用户自定义的变量,接下来我们来看的这些变量并不是用户自定义的,而是在shell中使用一些约定的规则来直接使用这些变量,我们来看一下位置变量是什么?
定义
当一条命令或脚本执行时,后面可以跟很多个参数,我们使用位置参数变量来表示这些参数。
例如:sh 1.sh hello world 123 456
当我们执行1.sh这样的脚本,后面可以跟多个参数,第一个参数是hello,第二个参数是world,第三个参数是123,第四个参数是456,这个时候当我们执行sh 1.sh hello world 123 456这个脚本的时候,我们可以直接引用后面的内容,比如我们可以通过$1来引用第一个变量hello,使用$2来引用第二个变量world,以此类推......那接下来我们看这些位置变量都有哪些内容?
这里我写一个locationVariable.sh的脚本。
vim locationVariable.sh
#!/bin/bash
echo "The First Parameter: $1"
echo "The Second Parameter: $2"
echo "The Third Parameter: $3"
echo "The Fourth Parameter: $4"
echo "The Fifth Parameter: $5"
echo $*
echo $@
echo $#
执行命令:
sh locationVariable.sh 小强 旺财 123 "Hello world"
可以看到当我们的sh locationVariable.sh命令后面跟4个参数时,前四个会依次输出,第五个的输出就是空的。$*和$@就是一个整体,最后的$#代表的是参数的个数。对于这些位置变量,我们在今后的shell脚本编写中会用到的比较多。
位置变量也常用在函数中
vim functionAdd.sh
#!/bin/bash
#
function add
{
value=`expr $1 + $2`
echo $value
}
add 123 456
当我们执行:
sh functionAdd.sh
会输出579。
我们在脚本中当调用函数add时也可以通过$1和$2来传递参数。
#!/bin/bash
#
function add
{
value=`expr $1 + $2`
echo $value
}
add $1 $2
当我们执行:
sh functionAdd.sh 123 456
也会同样得到两数相加的结果。
这时function add 函数内部的$1和$2就是通过add $1 $2传递过来的。
这些就是位置变量的一些用法。如果各位有补充请留言,我验证之后完善文章。谢谢!