linux shell 處理用戶輸入


  • 命令行參數

讀取參數,$0程序名,$1第一個參數以此類推,直到$9。第10個參數開始需要用花括號把數字括起來 ${10}

讀取程序名,默認$0是讀取帶路徑的程序名,但是有時候只需要腳本名,並不需要路徑,這時就可以用basename了,比如:

這樣可以根據不同的腳本名執行不同的功能

測試參數,當需要參數而沒有跟參數時會報錯。所以需要檢查數據是不是存在就很有必要,如下所示:

 

  • 特殊參數變量

參數計數  $# 該變量記錄腳本運行時的參數個數,如果要在大括號內使用該參數的話需要把$改為!因為大括號內不能使用美元符。

抓取所有的數據,$*和$@可以提供對所有參數的快速訪問。$*把所有參數當成一個參數,$@會單獨處理每個參數。

  • 移動變量 shift 默認左移一個位數,可以在shift后面跟數字修改默認左移位數。shift 2  左移2位。

 

  • 處理選項

簡單的選項

運行結果:

 

分離參數和選項

此處用破折號來區分選項和參數

 

處理帶值的選項

如上圖所示處理帶值的選項 -b

 

getopt 命令,能夠識別命令行參數

getopt options optstring parameters

optstring 列出你要在腳本中用到的每個命令行選項字母,然后再每個需要參數值的選項字母后加一個冒號。getopt會基於定義的optstring解析提供的參數。

如圖所示: -b 選項需要參數所以b后面有個:  參數是test1   而test2 和test3是參數,用雙破折號分開

當有無效參數出現的話會提示錯誤,如下圖所示:

當加上-q選項時會忽略錯誤信息,如下所示:

注意-q 的位置

腳本中使用getopt

采用set命令 -- 選項會將命令行參數替換成set命令的命令行的值。首先原始的腳本命令行參數傳給getopt,然后getopt把輸出給set命令。比如下面

set -- `getopt -q ab:cd "$@"`  下面是一個例子:

 

 getopts命令

getopts optstring variable,在optstring前面加個: 可以去掉錯誤消息。

getopts用到兩個環境變量。如果選項需要跟一個參數值,OPTARG環境變量就會保存這個值。OPTIND環境變量保存了參數列表中getopts正在處理的參數位置。

 

對於未定義的選項統一輸出成問號:

 

其中d是未定義的。

 getopts處理每個選項時會將OPTIND環境變量值增一。

使用OPTIND的值和shift命令來移動參數,如下圖所示:

其中OPTIND的值是記錄參數的位置,移動-1個量正好到達參數的位置。

 

  • 獲得用戶輸入

基本讀取

-n選項會移掉字符串末尾的換行符,允許腳本用戶緊跟其后輸入數據。

-p 參數可以在read后面跟多個變量,依次賦值

 

如果read后面不跟變量,那么默認會把收到的數據放到特殊環境變量REPLY中

 

-t 設置超市時間,單位秒 ,超時后read命令會以非零退出狀態碼退出

-n后面的數字1 表示直接受一個字符然后就主動退出,不用再按回車鍵。

-s隱藏輸入,事實上數據會被顯示,只是read命令將文本顏色設置成跟背景色一樣

從文件中讀取


免責聲明!

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



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