1、getopts
myoption
#!/bin/bash
while getopts ":a b" SWITCH;do (a前面的表示忽略系统报错信息)
case $SWITCH in
a) echo "-a option" ;;
b) echo "-b option" ;;
\?) echo "Unknow option" ;;
esac
done
./myoption -a
myoption
#!/bin/bash
while getopts ":a:b" SWITCH;do (a后的冒号表示a后面可以添加参数,a前面的冒号表示忽略系统的报错)
case $SWITCH in
a) echo "-a option"
echo "$OPTARG"(OPTARG是getopts内置的变量,后面可以跟参数)
;;
b) echo "-b option" ;;
\?) echo "Unknow option" ;;
esac
done
op.sh
read -p "a number" A
read -p "b number" B
while getopts ":admp" SW;do
case $SW in
a) echo "$[$A+$B]";;
d) echo "$[$A/$B]";;
m) echo "$[$A*$B]";;
p) echo "$[$A-$B]";;
\?) echo "unknow opreation";;
esac
./op.sh -a
./op.sh -d
OPTIND 是索引指针 在选项中一次移动一个参数
OPTARG 当OPTIND处在一个特定的选项的时候可以调用后面的参数
OPTING 指向一个参数
2、shift
shift 2 踢掉二个
./my.sh -a -b -c -d ss -e myfile
shift 5 $[OPTIND-1] 踢掉五个参数,引用myfile
shift
a.sh
./a.sh a b
a
b
shift 一次踢去一个