getopts和shift 的簡單應用

2021-09-21 08:34:11 字數 1347 閱讀 9340

getopts的簡單應用:

指令碼:#!/bin/bash

while getopts ":a:b:c" switch;do

case $switch in

a) echo "choose -a"

echo $optarg

;;b) echo "choose -b"

echo $optarg

;;c) echo "choose -c"

;;\?) echo "unknown option"

;;esac

done

測試結果:

「:a:b:c」a前邊加「:」 表示忽略選項產生的錯誤輸出。a後面的「:」表示可以在選項-a 後面加上引數。optarg用來儲存引數的值。

shift的使用方法:shift命令是用來「截去(lops off)」;來自列表的位置引數,由左開始。一旦執行shift,$1的初始值會永遠消失,取而代之的是$2的舊值。$2的值變成$3的舊值,

以此類推。$#值則會逐次減1。shift也可使用乙個可選的引數,也就是要位移的引數的計數。

——(《shell指令碼程式設計指南》130頁)

舉例:#/bin/bash

echo $1

shift

echo $1

下面,利用getopts命令和shift命令來構建乙個簡單的指令碼,指令碼的作用是通過呼叫此指令碼使我們在寫乙個新的指令碼時自動生成指令碼的頭部,包括作者,時間,版本,注釋資訊等等。

示例:#!/bin/bash

while getopts ":a:d:" switch;do

case $switch in

a) author=$optarg

;;d) desc=$optarg

;;\?) echo "sorry,unknown option!"

echo "usage:$0 -a author -d description filename"

exit 1

;;esac

done

shift $[$optind-1]

if ! grep "#!/bin/bash" $1 &>/dev/ull; then

cat>>$1

#date & time:`date +"%f %t"`

#author:"$" 如果不指明作者,預設是lily

#description:$desc

#version:1.0

eoffi

vim +7 $1

wait

chmod u+x $1

新建乙個指令碼試試:./newscript.sh -a lucy -d "this is a test" d.sh

測試結果:

getopts的用法解讀

getopts 命令 用途 處理命令列引數,並校驗有效選項。語法 getopts 選項字串 名稱 引數 getopts 命令是 korn posix shell 的內建命令,用來從引數列表檢索選項以及選項引數。選項由乙個 加號 或者是由乙個 減號 後跟乙個字元開始。乙個既不是以 也不是以 開始的選項...

學習bash裡的getopts

source getopts optstring varname arg optstringoption字串,會逐個匹配 varname每次匹配成功的選項 arg引數列表,沒寫時它會取命令列引數列表 optind特殊變數,option index,會逐個遞增 optarg特殊變數,option ar...

shell中getopts的用法

命令格式 getopts string args var name 兩個引數 如果不是很理解,先記住其命令格式和它的兩個引數代表的意義,看下面的操作。file name test bin bash while getopts a opt docase in a echo this is a vaul...