Shell script中使用getopt例子

2021-08-27 09:16:45 字數 2080 閱讀 3162

使用getopt可以非常方便的格式話選項跟對應的引數,例子如下

#!/bin/bash

set -- `getopt -q ab:c "$@"`

while [ -n "$1" ]

docase "$1" in

-a)echo "option -a";;

-b)

value="$2"

echo "option -b with para $value"

shift;;

-c) echo "option -c";;

--) shift

break;;

*) echo "$1 not option";;

esac

shift

done

count=1

for para in "$@"

doecho "#$count=$para"

count=$[$count+1]

done

./test -ab test1 -cd test2 test3 test4

結果:option -a

option -b with para 'test1'

option -c

#1='test2'

#2='test3'

#3='test4'

getopt 用法:

getopt options optstring parameters

對於./test -ab test1 -cd "test2 test3" test4

這樣的引數型別,getopt是無能為力的。這就需要getopts了

#!/bin/bash

while getopts :ab:c opt

docase $opt in

a) echo "-a option";;

b) echo "-b option with value $optarg";;

c) echo "-c option";;

*) echo $opt not a option;;

esac

done

optarg 環境變數存放對應選項的引數

./test -ab "hello,world" -cdefg

結果:-a option

-b option with value hello,world

-c option

? not a option

? not a option

? not a option

? not a option

命令引數的處理

#!/bin/bash

while getopts :ab:cd opt

docase $opt in

a) echo "-a option";;

b) echo "-b option with value $optarg";;

c) echo "-c option";;

d) echo "-d option";;

*) echo $opt not a option;;

esac

done

count=1

shift $[$optind-1]

for para in "$@"

doecho "#$count=$para"

count=$[$count+1]

done

./test -abtest1 -cd test2 test3 test4

結果:-a option

-b option with value test1

-c option

-d option

#1=test2

#2=test3

#3=test4

optind環境變數存放getopts命令剩餘的引數列表當前位值

用法:getopts optstring variable

Shell Script中FOR迴圈的使用

for迴圈的使用1 for i 0 i 5 i do date date y m d d i days ago showdate showdate date echo showdate done 輸出20120319 20120319 20120318 20120319 20120318 20120...

Shell script中eval的使用

eval 相當於乙個引數替換器,它會把所有 開頭的變數 進行求值替換,然後把替換後的結果當作一條命令來執行 舉個例子 bin bash para hello world my friend function process temp eval echo 1 cut d f 2 1 eval 1 te...

程序中使用委託(程序中使用程序)

delegate void setlablevisible bool bl 隱藏控制項的委託 設定進度控制項的隱藏顯示 委託 private void setvisible bool bl else this setvisible false 隱藏狀態控制項 當在程序中需要呼叫另外乙個程序的控制項的...