2. 命令行参数(选项、参数)
2.1 读取命令行参数
读取参数时,注意以下几点:
用空格分割各个参数
位置参数
$position:$0、$1、$2...
,其中$0
:0号位置参数是调用shell脚本的程序名;$1、$2、$3 ~ $9
:命令行传递的位置参数;${10}...
:对于多于10个(含)的位置参数,要添加{}引用
例1:命令行位置参数少于10个,脚本param1如下
- # !/bin/bash # 指定shell类型
-
- echo "the cmd is $0" # 通过$0,输出程序名(脚本名);程序命名可以为param1.sh或param1
- echo "The #1 param is $1"
- echo "The #2 param is $2"
-
- SUM=$[ $1 + $2 ]
-
- echo "The result is $SUM"
例2:命令行位置参数多于10个,脚本param2如下
- # !/bin/bash # 指定shell类型
-
- echo "The #1 param is $1"
- echo "The #2 param is $2"
- echo "The #10 param is ${10}"
-
- SUM=$[ $1 + $2 + ${10} ]
-
- echo "The result is $SUM"
- # chmod +x param2 # 修改脚本执行权限
-
- # ./param2 1 2 3 4 5 6 7 8 9 10 11 # 运行脚本,并输入11个参数
2.2 获取命令名
例1:使用basename获取不带路径的程序名,脚本read_cmd_name如下
- # !/bin/bash
-
- echo `basename $0` # 其中``是反引号,不是单引号''
- # chmod +x read_cmd_name
-
- # ./read_cmd_name
例2:使用一个shell脚本,判断多个cmd输入命令
- # !/bin/bash # 指定shell类型
-
- name=`basename $0` # 变量名、=、表达式,三者之间不能有空格
-
-
- if [ $name = add ]
- then
- result=$[ $1 + $2 ] # 变量名、=、表达式,三者之间不能有空格
- elif [ $name = sub ]
- then
- result=$[ $1 - $2 ] # 变量名、=、表达式,三者之间不能有空格
- fi
-
-
- echo "the $name result is $result"
使用命令basename获取程序名,可用于实现输入命令的判断:当命令行输入不同命令时,首先建立命令到脚本的软连接,然后命令在脚本内部判断执行,从而实现输入命令筛选。
2.3 特殊变量
几个命令行特殊变量
echo $#
echo $*
echo $@
查看特殊变量的类型
输出结果
- # ./special_variable 1 asd 1$ as1