?平時(shí)多多少少都會(huì)接觸linux,確不知道如何去寫shell script,因此想用一周的時(shí)間系統(tǒng)學(xué)習(xí)一下shell script怎么寫?
所有的代碼學(xué)習(xí)都是用向世界問好的"Hello World"開始的,那么我們的shell script也從這里開始。

1、第一行#bin/bash聲明這個(gè)script使用的shell名稱
因?yàn)槲覀兯玫膕hell為bash,所以必須要以“#bin/bash”來聲明這個(gè)文件內(nèi)的語法使用bash,那么當(dāng)程序執(zhí)行時(shí),它就能夠加載bash的相關(guān)環(huán)境配置文件,在很多情況下,如果沒有設(shè)置這一行,那么該程序很可能無法執(zhí)行,因?yàn)橄到y(tǒng)無法判斷程序需要使用什么shell來執(zhí)行。
2、程序內(nèi)容的說明
整個(gè)程序中,除了第一行的“#!”是用來聲明shell的之外,其他的“#”都是“批注”的用途,使用批注是編寫程序是一個(gè)需要養(yǎng)成的習(xí)慣,批注應(yīng)包括作者,日期,程序?qū)崿F(xiàn)的功能以及每次所做的改動(dòng)項(xiàng)等,這樣有助于以后對(duì)程序的維護(hù)。
3、主要程序部分
本程序的主要程序部分就是echo那一行,用于打印“Hello World”
4、告知程序的執(zhí)行結(jié)果
在linux中,判斷一條語句是否執(zhí)行成功,可以用$?這個(gè)變量來查看。在這個(gè)程序當(dāng)中,我們也同樣用了一個(gè)exit命令來讓程序中斷,并且回傳一個(gè)數(shù)值給系統(tǒng),exit0代表程序結(jié)束并傳回一個(gè)0給系統(tǒng),所以當(dāng)我們執(zhí)行完這個(gè)script,緊接著執(zhí)行echo $?,就會(huì)得到0的結(jié)果
5、關(guān)于程序的執(zhí)行
a、我們可以直接在當(dāng)前目錄下使用sh sh01.sh來執(zhí)行。(sh01為文件名)
b、由于腳本寫完后沒有執(zhí)行權(quán)限,故可以用chmod +x sh01.sh賦予可執(zhí)行權(quán)限,再用絕對(duì)路徑或相對(duì)路徑./sh01.sh來執(zhí)行。
d、使用source sh01.sh的方式來執(zhí)行,這里說下用source執(zhí)行和用前三種方式執(zhí)行的區(qū)別,用source執(zhí)行不會(huì)創(chuàng)建子進(jìn)程,即在script中創(chuàng)建的變量等會(huì)在bash中生效,而前三種執(zhí)行方式都會(huì)在bash中創(chuàng)建子進(jìn)程,那么創(chuàng)建的變量以及執(zhí)行的語句都只會(huì)在script中生效,這個(gè)我們可以用python中的全局變量和局部變量的方式去理解,即前三種執(zhí)行方式相當(dāng)于函數(shù)中的局部變量,只在當(dāng)前函數(shù)中生效,而source執(zhí)行方式相當(dāng)于全局變量,在整個(gè)程序中都生效。