使用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 隱藏狀態控制項 當在程序中需要呼叫另外乙個程序的控制項的...