為實現(xiàn)某個任務(wù),將許多命令組合后,寫入一個可執(zhí)行的文本文件的方法,稱為Shell腳本編程。
按照應(yīng)用的Shell環(huán)境不同,可以將Shell腳本分為多種類型。其中最常見的是應(yīng)用于Bash和Tcsh的腳本,通常將其稱為Bash和Tcsh腳本。同Tcsh腳本相比,Bash腳本在Linux中的應(yīng)用相對較廣。
一、Shell腳本的基本內(nèi)容
Shell腳本其實就是一個文本文件,因此建立新的腳本文件時,可以使用Vi、Emacs、Nano等文本編輯器。
提示:Shell腳本同Linux系統(tǒng)中的其他文件一樣,可以不使用擴展名。但為了方便識別,通常建議Bash腳本文件名以sh結(jié)尾,Tcsh腳本文件以csh結(jié)尾。
例如:
1 2 3 4 5 6 7 | [root@localhost shell]# cat hello.sh #!/bin/bash #This is a test script. #This script will output Hello. # 2013 / 12 / 15 echo "Hello!" |
本例中第1行內(nèi)容是:
#!/bin/bash
這一行的內(nèi)容用于告訴系統(tǒng)應(yīng)該使用何種Shell來執(zhí)行這個腳本,或者可以說是使用哪種Shell來解釋執(zhí)行這個腳本中的內(nèi)容。
注意:調(diào)用Bash語句也可以寫為#!/bin/bsh,并且調(diào)用Shell的語句只能出現(xiàn)在腳本文件的第1行。
2、腳本注釋
#This is a test script.
#This script will output Hello.
#2013/12/15
除第1行以外,腳本中所有以“#”開頭的行都是注釋。注釋的主要作用是為了方便閱讀和維護腳本,實際執(zhí)行時系統(tǒng)會忽略注釋。
【注釋的內(nèi)容】
功能。
創(chuàng)建時間和修改時間。
重要語句塊、復(fù)雜結(jié)構(gòu)的作用。
原創(chuàng)作者、修改作者。
3、腳本內(nèi)容
echo "Hello!"
腳本內(nèi)容是實現(xiàn)腳本的一組命令的集合,由一個或多個命令組成。在較為復(fù)雜的腳本中,又將腳本內(nèi)容劃分為定義部分和主題部分。
定義部分主要用于定義腳本捕獲的系統(tǒng)信號、使用的變量、函數(shù)和文件等。
主體部分主要用于調(diào)用定義部分中的變量、函數(shù),以實現(xiàn)腳本的功能。
【寫腳本內(nèi)容時的注意事項】
為了便于閱讀,每一行只書寫一個命令。
如果在一行寫多個命令,需要用分號“;“分隔,但通常不推薦。
在設(shè)計腳本內(nèi)容時,應(yīng)該將多個實現(xiàn)某一特定功能的命令寫成一個功能模塊或函數(shù)。
對于一些特殊的語句(例如流控制語句等),應(yīng)該使用特殊的縮進格式以便于閱讀。
一個合格的腳本文件,應(yīng)該同時使用Shell調(diào)用、腳本注釋、及腳本內(nèi)容語句。為了使腳本可讀性更高、通常應(yīng)該在Shell調(diào)用、腳本注釋、腳本內(nèi)容語句、功能模塊和函數(shù)之間使用空行分隔。
二、腳本的運行方式
1、使用bash命令執(zhí)行腳本
[root@localhost shell]# bash hello.sh
Hello!
2、使用點號“.”執(zhí)行腳本
這種執(zhí)行腳本的方式通常用于調(diào)用系統(tǒng)腳本文件。
[root@localhost shell]# . hello.sh
Hello!
注意:使用bash命令和點號執(zhí)行腳本時,可以省略腳本文件中的Shell調(diào)用語句。但如果腳本不是系統(tǒng)腳本文件時,通常不建議這樣做。
3、設(shè)置腳本為可執(zhí)行
[root@localhost shell]# chmod u+x hello.sh
[root@localhost shell]# ./hello.sh
Hello!
三、接收用戶輸入
1 2 3 4 5 6 7 8 9 10 | [root@localhost shell]# cat accept_input.sh #!/bin/bash #This is a sample script file. #Accept user input for demonstartion. # 2013 / 12 / 15 echo -n "Input your name:" read NAME echo "Hello,$NAME." |
四、向腳本傳遞參數(shù)
為了捕獲向腳本傳遞的參數(shù),可以使用系統(tǒng)定義的位置變量。位置變量是一類比較特殊的變量,引用腳本參數(shù)時,可以使用$1到$9這9個變量。
[root@localhost shell]# ./get_para.sh one two three four
The first parameter:one
The second parameter:two
The third parameter:three
The fourth parameter:four
......