shift和getopts命令

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中的),就會繼續檢測下一個參數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章