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