Shell编程中的用户输入处理(2):处理命令行参数(选项、参数)
发布时间:2020-12-15 20:06:39 所属栏目:安全 来源:网络整理
导读:2. 命令行参数(选项、参数) 2.1 读取命令行参数 读取参数时,注意以下几点: 用空格分割各个参数 位置参数 $position:$0、$1、$2... ,其中 $0 :0号位置参数是调用shell脚本的程序名; $1、$2、$3 ~ $9 :命令行传递的位置参数; ${10}... :对于多于10
2. 命令行参数(选项、参数)2.1 读取命令行参数读取参数时,注意以下几点:
例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"
# chmod +x param1 # 修改脚本执行权限
# ./param1 1 2 # 运行脚本,并输入两个参数:1、2
# 运行脚本可以为./脚本名,相对路径/脚本名,绝对路径/脚本名
例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获取程序名,可用于实现输入命令的判断:当命令行输入不同命令时,首先建立命令到脚本的软连接,然后命令在脚本内部判断执行,从而实现输入命令筛选。 # ln -s link_to_exe add # 把basename脚本链接到add
# ln -s link_to_exe sub # 把basename脚本链接到sub
# ./add 3 4 # 输入判断
# ./sub 3 6
2.3 特殊变量几个命令行特殊变量
查看特殊变量的类型 # !/bin/bash # 指定shell类型
echo $# # 参数计数,显示输入了几个位置参数
echo $* # 显示输入的所有参数
echo $@ # 显示输入的参数列表
echo
for var in "$#" # $#是一个变量
do
echo "$# param-$var" # 后的$不转义
done
for var in "$*" # $*是一个变量
do
echo "$* param-$var"
done
for var in "$@" # $@是一个列表
do
echo "$@ param-$var"
done
输出结果 # ./special_variable 1 asd 1$ as1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |