4)函式
如果您寫了一些稍微複雜一些的程式,您就會發現在程式中可能在幾個地方使用了相同的**,並且您也會發現,如果我們使用了函式,會方便很多。乙個函式是這個樣子的:
functionname()
# inside the body $1 is the first argument given to the function
# $2 the second ...
body
您需要在每個程式的開始對函式進行宣告。
下面是乙個叫做xtitlebar的指令碼,使用這個指令碼您可以改變終端視窗的名稱。
這裡使用了乙個叫做help的函式。正如您可以看到的那樣,這個定義的函式被使用了兩次。
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
cat <
xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole
usage: xtitlebar [-h] "string_for_titelbar"
options: -h help text
example: xtitlebar "cvs"
help
exit 0
# in case of error or if -h is given we call the function help:
[ -z "$1" ] && help
[ "$1" = "-h" ] && help
# send the escape sequence to change the xterm titelbar:
echo -e "33]0;$107"
命令列引數
我們已經見過$* 和 $1, $2 ... $9 等特殊變數,這些特殊變數包含了使用者從命令列輸入的引數。迄今為止,我們僅僅了解了一些簡單的命令列語法(比如一些強制性的引數和檢視幫助的-h選項)。但是在編寫更複雜的程式時,您可能會發現您需要更多的自定義的選項。通常的慣例是在所有可選的引數之前加乙個減號,後面再加上引數值 (比如檔名)。有好多方法可以實現對輸入引數的分析,但是下面的使用case表示式的例子無遺是乙個不錯的方法。
#!/bin/sh
help()
cat <
this is a generic command line parser demo.
usage example: cmdparser -l hello -f -- -somefile1 somefile2
help
exit 0
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
-f) opt_f=1;shift 1;; # variable opt_f is set
-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done
echo "opt_f is $opt_f"
echo "opt_l is $opt_l"
echo "first arg is $1"
echo "2nd arg is $2"
您可以這樣執行該指令碼:
cmdparser -l hello -f -- -somefile1 somefile2
返回的結果是:
opt_f is 1
opt_l is hello
first arg is -somefile1
2nd arg is somefile2
這個指令碼是如何工作的呢?指令碼首先在所有輸入命令列引數中進行迴圈,將輸入引數與case表示式進行比較,如果匹配則設定乙個變數並且移除該引數。根據unix系統的慣例,首先輸入的應該是包含減號的引數.
Linux 指令碼編寫基礎 一
1.1 語法基本介紹 1.1.1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。要使指令碼可執行 編譯 chmod x fi...
linux指令碼編寫基礎之珍藏
經過長時間學習linux指令碼編寫的用法,於是和大家分享一下,看完本文你肯定有不少收穫,希望本文能教會你更多東西。linux指令碼編寫語法基礎介紹 1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin...
linux指令碼編寫基礎之珍藏
linux指令碼編寫語法基礎介紹 1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編寫指令碼完成時,如果要執行該指令碼,還必須使其可執行。要使編寫指令碼可執行 編譯 chmod...