Shell是什么?
shell本身是一個(gè)命令解釋器,介于操作系統(tǒng)的內(nèi)核(kernel)和用戶之間,可以執(zhí)行系統(tǒng)調(diào)用及系統(tǒng)命令等,讓用戶以此來(lái)與操作系統(tǒng)實(shí)現(xiàn)互動(dòng)。同時(shí),它也用來(lái)指一種計(jì)算機(jī)程序語(yǔ)言(類似于C、Python等)。一個(gè)shell程序一般被稱為一個(gè)腳本。
Shell語(yǔ)言的流派
目前,shell主要有兩大流派:
sh:
burne shell (sh) burne again shell (bash)
csh:
c shell (csh) tc shell (tcsh) korn shell (ksh)
目前,大部分linux系統(tǒng)預(yù)設(shè)的shell都是bash。
Shell 編程概述
在 Linux 下有一門(mén)腳本語(yǔ)言叫做:Shell 腳本,這個(gè)腳本語(yǔ)言可以幫助我們簡(jiǎn)化很多工作,例如批量運(yùn)行一些命令等,所以還是很有必要學(xué)習(xí)它的基本用法的,一個(gè)簡(jiǎn)單的 hello.sh 腳本像下面這樣。
#!/bin/bash echo "Hello World!"
第一行 #!/bin/bash 標(biāo)識(shí)該 Shell 腳本由哪個(gè) Shell 解釋:/bin/bash。將上面的兩行內(nèi)容寫(xiě)到文件hello.sh中,就可以執(zhí)行了:
執(zhí)行shell腳本方法1:
#這樣可以省略第一行的:#!/bin/bashsh ./hello.sh
執(zhí)行shell腳本方法2:賦予權(quán)限才可以執(zhí)行:
# 賦予可執(zhí)行權(quán)限chmod a+x hello.sh# 執(zhí)行 文件的第一行必須指定執(zhí)行shell的路徑:#!/bin/bash./hello.sh# 結(jié)果Hello World!
Shell 變量
Shell 變量分為 3 種:
用戶自定義變量預(yù)定義變量環(huán)境變量定義變量需要注意下面 2 點(diǎn):
等號(hào)前后不要有空格:NUM=10一般變量名用大寫(xiě):M=1使用 $ 符號(hào)調(diào)用變量,例如:
VAR="Hello Shell!"echo $VAR
注意:變量定義直接給變量取名字,變量值如果字符串中有空格等特殊字符需要用引號(hào)引起來(lái),這樣VAR變量中存儲(chǔ)了一個(gè)字符串,再次調(diào)用變量的值需要加符號(hào):$VAR
1. 用戶自定義變量
支持字符串類型,浮點(diǎn)等類型,常見(jiàn)有這 3 個(gè)前綴:
unset:刪除變量readonly:標(biāo)記只讀變量export:指定全局變量一個(gè)例子:
執(zhí)行./hello.sh 1 2 3 4 5 的結(jié)果:
運(yùn)行結(jié)果:
2. for 循環(huán)
這是一個(gè) for 循環(huán)基本使用例子,挺簡(jiǎn)單的,有點(diǎn)類似 Python:
3. while 循環(huán)
注意與 for 循環(huán)的區(qū)別:
運(yùn)行結(jié)果:
shell命令應(yīng)用:
其實(shí)我們打開(kāi)的linux的終端也是一個(gè)shell,上面很多命令不用存到文件中也可以直接在終端運(yùn)行;下面舉例shell編程的運(yùn)用;
1.利用循環(huán)批量生成命令,分別存儲(chǔ)到不同的文件:
#注意:命令寫(xiě)成一行的時(shí)候用 ; 分隔不同語(yǔ)句塊。for i in xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan;do echo "perl /share/work/huangls/piplines/01.script/kegg_update_get_anno.pl $i $i.anno $i.fa" >$i.sh;done
1.《shell語(yǔ)言 一篇文章讓你讀懂linux shell編程--基礎(chǔ)篇》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《shell語(yǔ)言 一篇文章讓你讀懂linux shell編程--基礎(chǔ)篇》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/keji/346423.html