位置参数变量其实属于预定义变量的一种。
位置参数变量主要有以下这些:
位置参数变量 | 说明 |
---|---|
$n | n为自然数。 0代表命令本身, 1到 9代表第1到第9个参数(参数的值是执行该命令时,从 1开始依次输入的),十以上的参数要用大括号包含,如${10}。 |
$* | 这个变量代表命令行中所有的参数(不包括$0),它把所有的参数当做一个整体对待。对其进行for循环遍历时,只会循环一次。 |
$@ | 这个变量也代表命令行中所有的参数(不包括$0),它把所有的参数当做独立的个体对待。对其进行for循环遍历时,可循环多次。 |
$# | 这个变量代表命令行中所有参数的个数(不包括$0)。 |
位置参数变量的名称和作用都是固定的,但我们可以给其传入不同的值。
位置参数变量的作用是接收用户执行命令时传入的参数以及命令本身。
位置参数变量主要用在shell脚本文件中,那么它的作用就是把命令和命令的参数传递到当前执行的脚本中。
下面通过编写一个shell脚本文件canshu.sh,并执行它来说明。
vi canshu.sh
canshu.sh的内容如下:
#!/bin/bash
echo $0
echo "\$1 is $1"
echo "\$2 is $2"
for x in "$*"
do
echo $x
done
for y in "$@"
do
echo $y
done
echo $#
给该shell脚本赋予执行权限。
chmod 755 canshu.sh
赋予执行权限。
执行该脚本,并传递两个参数。
[root@localhost 12:41 ~/sh]# ./canshu.sh a b
./canshu.sh
$1 is a
$2 is b
a b
a
b
2
总结: 使用位置参数变量来接收用户输入的参数,有一个弊端是,除非脚本是你自己写的,否则执行脚本时,你根本不知道要传入几个什么样的参数。好处是在执行脚本的同时传入参数。