shell--getopts


在寫sh腳本的時候,常常需要運行時輸入一些數據。基本的$*,執行的情況,大概就是$0 $1 $2 $3…… 那么,那些系統命令里的參數又是怎么做出來的呢?我們自己的腳本如何搞出來$0-$1的效果呢?這就是getopts的作用了。舉例如下:

#!/bin/bash
echo "OPTIND starts at $OPTIND"
while getopts ":pq:" optname
do
    case "$optname" in
    "p")
        echo "Option $optname is specified"
        ;;
    "q")
        echo "Option $optname has value $OPTARG"
        ;;
    "?")
        echo "Unknown option $OPTARG"
        ;;
    ":")
        echo "No argument value for option $OPTARG"
        ;;
    *)
        # Should not occur
        echo "Unknown error while processing options"
        ;;
    esac
echo "OPTIND is now $OPTIND"
done

 

在使用getopts命令的時候,shell會自動產生兩個變量OPTIND和OPTARG。

OPTIND初始值為1,其含義是下一個待處理的參數的索引。只要存在,getopts命令返回true,所以一般getopts命令使用while循環;

OPTARG是當getopts獲取到其期望的參數后存入的位置。而如果不在其期望內,則$optname被設為?並將該意外值存入OPTARG; 如果$optname需要擁有具體設置值而實際卻沒有,則$optname被設為:並將丟失設置值的optname存入OPTARG;

對於$optname,可以用后標:來表示是否需要值;而前標:則表示是否開啟靜默模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM