linuxshell基礎(chǔ)語法B

接著之前的內(nèi)容繼續(xù)講shell編程的基礎(chǔ)。
這部分還是先要鞏固重定向的使用,以及創(chuàng)建自己的文件描述符,在編寫shell腳本中關(guān)注臨時重定向和永久重定向的用法。
(1)< <<
(2)> >>
為了區(qū)分如上的重定向符號,大家搞懂以下2個例子就行:
cat > file <<eof;
cat >> fileA <fileB
實際使用中輸入重定向還是比較少,多數(shù)是輸出重定向
&> 表示stdout和stderr都重定向
對于文件描述符,我們不光要掌握0,1,2,還要能夠自己創(chuàng)建自己的文件描述符,且在shell編程中與默認(rèn)的標(biāo)準(zhǔn)文件描述符進(jìn)行組合使用。比如說要恢復(fù)文件描述符就是一個例子。
exec 3 >&1
exec 1> testfile
...
...
exec 1>&3
...
...
以上是輸出重定向的恢復(fù),輸入重定向如下
exec 6 <&0
exec 0 <filein
...
exec 0 <&6
關(guān)閉文件描述符
exec 3 >&-
還有一種<>讀寫文件描述符的,慎用,最好是讀完后再重定向?qū)懭?,不然shell維護(hù)的內(nèi)部指針會把文件內(nèi)容搞得很混亂。
創(chuàng)建臨時文件和目錄
mktemp file.XXXXXX
mktemp -t 創(chuàng)建在/tmp下面且返回絕對路徑
mktemp -d創(chuàng)建目錄
tee的使用
tee -a

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)大石橋免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

重定向講完,再講講腳本的控制。腳本的控制主要是信號的處理。
用kill -l就可以看到linux支持的信號。這些信號是一類“軟中斷信號”,信號分為硬中斷信號和軟中斷信號,在中斷處理的上半部分由硬中斷執(zhí)行,下半部分一般都是交給軟中斷執(zhí)行。linux中的kill方式就是用戶態(tài)下進(jìn)程間異步信號通信的一種方法。按照不同的角度,還可以把信號分為實時和非實時,可靠和非可靠。
大部分信號都是會去停止,終止進(jìn)程,但是還是有細(xì)微差異,比如信號是否可以捕獲,是否可以忽略等等,信號的默認(rèn)動作也是不一樣的,有些會觸發(fā)dump core。
基本掌握 ctrl+c ctrl+z 對應(yīng)的信號
捕獲信號使用trap “:” SIGINT
放棄捕獲 trap --SIGINT
可以使用trap實現(xiàn)簡單的跳板機(jī)程序
腳本還可以在后臺執(zhí)行 bash xx.sh &
如果希望終端退出不影響腳本的執(zhí)行使用nohup
執(zhí)行腳本就會產(chǎn)生進(jìn)程,進(jìn)程是需要占用內(nèi)存和cpu資源的。一般通過nice renice來調(diào)整謙讓度-20~19,值越低cpu需求越高。也可以用cpulimit和cgroup來實現(xiàn)進(jìn)程的資源管理。cgroup可以對一組進(jìn)程進(jìn)行管理限制,且不限于cpu,memory,blkio也行。
定時腳本也是腳本控制的一個內(nèi)容,at命令可以完成簡單的需求。更多的還是使用crontab文件或者crontab命令來實現(xiàn),anacron也需要了解一下。

函數(shù)是基礎(chǔ)語法的最后一部分。
結(jié)構(gòu):
function xxx()
{

}
xxx()
{

}
在shell中變量默認(rèn)都是全局的,如果要局部使用請加local
數(shù)組類等復(fù)雜變量無法直接傳遞,可以拆分后再組合來實現(xiàn)效果。
注意函數(shù)位置變量和腳本位置變量的關(guān)系,別混淆。
shell函數(shù)也能實現(xiàn)遞歸等操作。
shell定義函數(shù)也有單行的表示方式。
shell編寫腳本后,可以把一些公共的標(biāo)準(zhǔn)函數(shù)放到一個shell文件中,后續(xù)在別的腳本中直接以庫的形式引用,source和點操作符.來實現(xiàn)。

分享標(biāo)題:linuxshell基礎(chǔ)語法B
文章網(wǎng)址:http://muchs.cn/article26/ghsscg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃電子商務(wù)、服務(wù)器托管、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)