Linux 指令碼編寫基礎 四

2021-05-21 17:57:50 字數 2111 閱讀 8059

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...