1.使用$#
$ pg opt.sh
#!/bin/sh
#opt.sh
usage()
opt=$1
processid=$1
if [ $# -ne 2 ]
then
usage
exit 1
ficase $opt in
start|start) echo "starting..$processid"
;;stop|stop) echo "stopping...$processid"
;;*) usage
;;esac
$# 表示命令行的個數,執行時用
$ opt.sh start named
starting..start
$ opt.sh start
usage:'basename /home/dongjichao/bin/opt.sh' start|stop process name
2.shift命令
shift可以從左至右的選擇命令列引數,如
$ cat -n opt2.sh
1 #!/bin/sh
2 # opt2.sh
3 loop=0
4 while [ $# -ne 0 ]
5 do
6 echo $1
7 shift
8 done
$ history | tail -n 10
1541 cat opt
1542 cat opt.sh
1543 opt.sh start named
1544 opt.sh start
1545 cat -n opt2.sh
1546 history | tail 100
1547 history | tail -n 100
1548 opt2.sh file1 file2 file3
1549 history | tail -n 30
1550 history | tail -n 10
dongjichao@dongjichao:~/bin$ !1548
opt2.sh file1 file2 file3
file1
file2
file3
3.使用shift處理檔案轉換
$ cat opt3.sh
#!/bin/sh
#opt3.sh
usage()
if [ $# -eq 0 ]; then
usage
fiwhile [ $# -gt 0 ]
docase $1 in
-u|-u) echo "-u option specified"
shift
;;-l|-l) echo "-l option specifed"
shift
;;*) usage
;;esac
done
執行$ opt3.sh -u -l -k
-u option specified
-l option specifed
usage:opt3.sh -[l|u] file [files]
4.getopts
有時需要寫類似 $ 命令 -l -c 23這樣的命令,這時需要用到getopts
以下getopts指令碼接受下列選項或引數
a 設定變數all為true
h 設定變數help為true
f 設定變數file為true
v 設定變數verbose為true
$ cat getopt1.sh
#!/bin/sh
#getopt1
all=false
help=false
file=false
verbose=false
while getopts ahfgv option
docase $option in
a)all=true
echo "all is $all"
;;h)help=true
echo "help is $help"
;;f)file=true
echo "file is $file"
;;v)verbose=true
echo "verbose is $verbose"
;;esac
done
執行上面的指令碼
$ getopt1.sh -a -h
all is true
help is true
向指令碼傳遞引數
start 在需要的時候我們可以向 perl 指令碼傳遞引數,perl 會自動將所有的引數放到陣列 argv 中,下面是乙個簡單的例子。usr bin perl use strict if argv 1 my name argv print welcome name n unix 的 cat 命令可...
awk向指令碼傳遞引數(二)
命令列引數的乙個重要限制是它們在begin過程中是不可用的。也就是說,直到首行輸入完畢以後它們才可用。為什麼?這是乙個easy混亂的部分。從命令列傳遞的引數就好像檔名稱一樣被處理。賦值操作知道這個變數 假設它是乙個檔名稱 被求值時才進行。參閱以下的指令碼。該指令碼將變數n設定為乙個命令列引數。awk...
PowerShell指令碼傳遞引數
在編寫powershell指令碼的時候,可以通過給變數賦值的方法輸出想要的結果,但這樣的話,需要改動指令碼內容。其實也可以在指令碼中定義引數,然後再在執行指令碼的時候對引數賦值,而無需改動指令碼內容。在powershell指令碼中,可以使用param 宣告引數,如下 param a,b write ...