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 一次踢去一个