日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

shell getopts命令

發(fā)布時(shí)間:2023/11/27 生活经验 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell getopts命令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

由于shell命令行的靈活性,自己編寫代碼判斷時(shí),復(fù)雜度會(huì)比較高。使用內(nèi)部命令 getopts 可以很方便地處理命令行參數(shù)。一般格式為:

getopts optstring name [args]
?????? getopts 的設(shè)計(jì)目標(biāo)是在循環(huán)中運(yùn)行,每次執(zhí)行循環(huán),getopts 就檢查下一個(gè)命令行參數(shù),并判斷它是否合法。即檢查參數(shù)是否以 - 開頭,后面跟一個(gè)包含在 options 中的字母。如果是,就把匹配的選項(xiàng)字母存在指定的變量 variable 中,并返回退出狀態(tài)0;如果 - 后面的字母沒有包含在 options 中,就在 variable 中存入一個(gè) ?,并返回退出狀態(tài)0;如果命令行中已經(jīng)沒有參數(shù),或者下一個(gè)參數(shù)不以 - 開頭,就返回不為0的退出狀態(tài)。

getopts引用的三個(gè)環(huán)境變量:

OPTARG: 上一個(gè)由getopts內(nèi)置命令處理的選項(xiàng)參數(shù)的值, option argument(存放選項(xiàng)參數(shù)),當(dāng)選項(xiàng)需要選項(xiàng)參數(shù)時(shí),getopts 命令就將其置于變量 OPTARG 中

OPTIND: ?下一個(gè)由getopts內(nèi)置命令處理的參數(shù)的序號(hào),option index,每次調(diào)用腳本它都會(huì)被初始值為1,會(huì)逐次遞增。

OPTERR: 如果設(shè)為1,bash會(huì)顯示getopts的錯(cuò)誤。設(shè)為0,不顯示getopts的錯(cuò)誤。

getopts 的處理過程:
  調(diào)用腳本時(shí),OPTIND為初始化為1。每調(diào)用一次getopts,就將下一個(gè)選項(xiàng)值賦給name , 選項(xiàng)索引值OPTIND也會(huì)指向下一個(gè)要處理選項(xiàng)的位置,選項(xiàng)參數(shù)則會(huì)賦給OPTARG
  getopts 的設(shè)計(jì)目標(biāo)是在循環(huán)中運(yùn)行,每執(zhí)行一次,getopts就檢查下一個(gè)命令行參數(shù),并判斷它是否有效。(即檢查參數(shù)是否以-開頭,后面跟一個(gè)包含在opstring中的字母)。
  有效,則把匹配的選項(xiàng)字母存在指定的變量variable中,并返回退出狀態(tài)0(ture);
  無(wú)效(如果-后面的字母沒有包含在options),就在 variable 中存入一個(gè)?,并返回退出狀態(tài)0;如果命令行中已經(jīng)沒有參數(shù),或者下一個(gè)參數(shù)不以-開頭,就返回不為0的退出狀態(tài)(false, 可用于結(jié)束while 循環(huán))。
 getopts處理完所有參數(shù)后,會(huì)返回一個(gè)非0值(false,退出循環(huán)),此時(shí)OPTIND索引值指向第一個(gè)非選項(xiàng)的參數(shù)[args],name置為?

getopts 錯(cuò)誤處理
  正確使用命令時(shí),name用來(lái)存儲(chǔ)option, $OPTARG用來(lái)存放option的參數(shù)。若命令輸入有誤(選項(xiàng)無(wú)效,缺少參數(shù)),getopts會(huì)處理illegal option錯(cuò)誤和miss option argument錯(cuò)誤。處理結(jié)果與opstring是否以:開頭而不同。opstring 開頭的:用于屏蔽getopts處理時(shí)的錯(cuò)誤消息(腳本中將OPTERR置于0也可以達(dá)到同樣的效果)。

?

舉個(gè)栗子

#!/bin/bash
while getopts u:p:n option
do case "$option" inu)echo "option:u, value $OPTARG"echo "next arg index:$OPTIND";;p)echo "option:p"passwd=$OPTARGecho "next arg index:$OPTIND"echo "PASSWD IS: $passwd";;n)echo "option:N"echo "next arg index:$OPTIND";;\?)echo "Usage: args [-U] [-p] [-n]"echo "-u means uses"echo "-p means passwd"echo "-n means name"exit 1;;esac
done

原文鏈接:https://www.cnblogs.com/hello-wei/p/9778407.html

轉(zhuǎn)載于:https://www.cnblogs.com/jianzhaojing/p/11451652.html

總結(jié)

以上是生活随笔為你收集整理的shell getopts命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。