读取参数
bash shell会将所有的命令行参数都指派给称作位置参数(positional parameter)的特殊变量。这也包括shell脚本名称。位置变量的名称都是标准数字:$0对应脚本名,$1对应第一个命令行参数,$2对应第二个命令行参数,以此类推,直到$9
例
#!/bin/bash
product=$[ $1 * $2 ]
echo The first parameter is $1
echo The second parameter is $2
echo The product parameter is $product
echo The filename is $0
exit
输出:
The first parameter is 2
The second parameter is 3
The product parameter is 6
The filename is ./test7
如果脚本需要的命令行参数不止9个,则仍可以继续加入更多的参数,但是需要稍微修改一下位置变量名。在第9个位置变量之后,必须在变量名两侧加上花括号,比如${10}
例
cat test8
#!/bin/bash
product=$[ ${10} * ${11} ]
echo the parameter is ${10}
echo the parameter is ${11}
echo the ${10}*${11} is $product
输出
./test8 1 2 3 4 5 6 7 8 9 15 18
the parameter is 15
the parameter is 18
the 15*18 is 270
判断命令行参数
特殊变量$#含有脚本运行时携带的命令行参数的个数
cat test9
#!/bin/bash
if [ $# != 2 ]
then
echo "需要输入两个变量"
else
total=$[ $1 + $2 ]
echo $1 + $2 is $total
fi
exit
输出
./test9
需要输入两个变量
./test9 23 12
23 + 12 is 35
$#变量含有命令行参数的总数,${!#}应该就代表了最后一个位置变量
当命令行中没有任何参数时,$#的值即为0,但${!#}会返回命令行中的脚本名。
移动参数-shift
该命令可用于操作命令行参数。跟字面上的意思一样,shift命令会根据命令行参数的相对位置进行移动
标准文件描述符