shift位置偏移命令,用於對參數的偏移(左移)
- #!/bin/bash
- #
- if ! [ $# = 0 ];then
- echo "未加shift命令偏移."
- for i in `seq 1 $#`;do
- echo "第一個參數爲: $1 參數個數爲: $#"
- done
- else
- echo "沒有參數."
- fi
- if ! [ $# = 0 ];then
- echo "加shift命令偏移."
- for j in `seq 1 $#`;do
- echo "第一個參數爲: $1 參數個數爲: $#"
- shift
- done
- else
- echo "沒有參數."
- fi
執行結果
getopts是shell的內部命令,用來獲取與分析命令行參數
- #/bin/bash
- #
- echo $0
- echo $*
- while getopts ":a:bc" opt
- do
- case $opt in
- a)
- echo $OPTARG
- echo $OPTIND;;
- b)
- echo "b $OPTIND";;
- c)
- echo "c $OPTIND";;
- ?)
- echo "error"
- exit 1;;
- esac
- done
- echo $OPTIND
- echo $*
- shift $(($OPTIND-1))
- echo $(($OPTIND-1))
- echo $*
- echo $0
執行結果
1、$0在用sh 或者 ./執行腳本時,指的是腳本名
2、$1 (1....n)指的第一個參數到....第n個參數
3、OPTARG存儲相應選項的參數, OPTIND指向的是下一個參數的index
4、shift 會改變參數的順序,通過左移去掉某些參數
5、getopts檢測到非法參數就會停止,比如上例中遇到song就會終止,並不會去檢測-m了,只要前一個參數是合法的(包含在option_string中的),就會繼續檢測下一個參數。