shell指令碼命令列引數獲取 getopts

2021-10-02 22:12:00 字數 1165 閱讀 3853

引數說明:

詳細說明

如果option_string不用:開頭,invalid option錯誤和miss option argument錯誤都會使varname被設成?。

getopts包含兩個內建變數,optarg和optind

#!/bin/bash 

quiet=

verbose=

device=

logfile=/tmp/default

usage()

[ $# -eq 0 ] && usage

#option_string以冒號開頭表示遮蔽指令碼的系統提示錯誤,自己處理錯誤提示。

#後面接合法的單字母選項,選項後若有冒號,則表示該選項必須接具體的引數

while getopts :qvd:l: option

do case $option in

q)quiet=y

;;v)

verbose=y

;;d)

device=$optarg #$optarg為特殊變數,表示選項的具體引數

;;l)

logfile=$optarg

;;\?) #如果出現錯誤,則解析為?

usage

;;esac

done

#$optind為特殊變數,表示第幾個選項,初始值為1

shift $(($optind - 1)) #除了選項之外,該指令碼必須接至少乙個引數

if [ $# -eq 0 ]; then

usage

fiif [ -z "$device" ]; then #該指令碼必須提供-d選項

echo "you must specify device with -d option"

exit

fiecho "you chose the following options.."

echo "quiet=$quiet verbose=$verbose device=$device logfile=$logfile"

for file in $@ #依次處理剩餘的引數

do echo "processing $file"

done

Shell指令碼學習 命令列引數處理

在linux 的shell 中怎樣處理tail n 10 access.log這樣的命令列選項 呢?這是被別人問起的乙個問題,好好學習 了一下,進行總結如下 在bash中,可以用以下三種方式來處理命令列引數 每種方式都有自己的應用場景。1.直接處理,依次對 1,2,n進行解析,分別手工處理 2.ge...

shell指令碼程式設計 處理命令列引數

1 讀取引數 bash shell使用位置引數的特殊變數記錄命令列引數,0是程式名,1 9依次為輸入引數 如果指令碼需要多餘9個變數,需要將變數數字加花括號,如 命令列輸入的引數需要以空格分隔,當空格作為引數的一部分時可以使用引號分開 在指令碼中對命令列引數進行處理時需要對引數進行有效性判斷,如 1...

獲取命令列引數

在win32控制台應用程式中,主函式為 int main intargc,char argv 其中argc為引數個數,我們可以如此呼叫 for i 0 i 在win32應用程式中呢?主函式為 int winapi winmain hinstancehinstance,hinstancehprevin...