linux shell 基礎語法B 等潮的人的部落格

2022-09-23 03:18:12 字數 1295 閱讀 9427

接著之前的內容繼續講shell程式設計的基礎。這部分還是先要鞏固重定向的使用,以及建立自己的檔案描述符,在編寫shell指令碼中關注臨時重定向和永久重定向的用法。(1)< < >>為了區分如上的重定向符號,大家搞懂以下2個例子就行:cat > file <> filea 表示stdout和stderr都重定向對於檔案描述符,我們不光要掌握0,1,2,還要能夠自己建立自己的檔案描述符,且在shell程式設計中與預設的標準檔案描述符進行組合使用。比如說要恢復檔案描述符就是乙個例子。exec 3 >&1exec 1> testfile......exec 1>&3......以上是輸出重定向的恢復,輸入重定向如下exec 6 &-還有一種<>讀寫檔案描述符的,慎用,最好是讀完後再重定向寫入,不然shell維護的內部指標會把檔案內容搞得很混亂。建立臨時檔案和目錄mktemp file.******mktemp -t 建立在/tmp下面且返回絕對路徑mktemp -d建立目錄tee的使用tee -a

重定向講完,再講講指令碼的控制。指令碼的控制主要是訊號的處理。用kill -l就可以看到linux支援的訊號。這些訊號是一類「軟中斷訊號」,訊號分為硬中斷訊號和軟中斷訊號,在中斷處理的上半部分由硬中斷執行,下半部分一般都是交給軟中斷執行。linux中的kill方式就是使用者態下程序間非同步訊號通訊的一種方法。按照不同的角度,還可以把訊號分為實時和非實時,可靠和非可靠。大部分訊號都是會去停止,終止程序,但是還是有細微差異,比如訊號是否可以捕獲,是否可以忽略等等,訊號的預設動作也是不一樣的,有些會觸發dump core。基本掌握 ctrl+c ctrl+z 對應的訊號捕獲訊號使用trap 「:」 sigint放棄捕獲 trap --sigint可以使用trap實現簡單的跳板機程式指令碼還可以在後台執行 bash xx.sh &如果希望終端退出不影響指令碼的執行使用nohup執行指令碼就會產生程序,程序是需要占用記憶體和cpu資源的。一般通過nice renice來調整謙讓度-20~19,值越低cpu需求越高。也可以用cpulimit和cgroup來實現程序的資源管理。cgroup可以對一組程序進行管理限制,且不限於cpu,memory,blkio也行。定時指令碼也是指令碼控制的乙個內容,at命令可以完成簡單的需求。更多的還是使用crontab檔案或者crontab命令來實現,anacron也需要了解一下。

函式是基礎語法的最後一部分。結構:function ***()***()在shell中變數預設都是全域性的,如果要區域性使用**local陣列類等複雜變數無法直接傳遞,可以拆分後再組合來實現效果。注意函式位置變數和指令碼位置變數的關係,別混淆。shell函式也能實現遞迴等操作。shell定義函式也有單行的表示方式。shell編寫指令碼後,可以把一些公共的標準函式放到乙個shell檔案中,後續在別的指令碼中直接以庫的形式引用,source和點操作符.來實現。

linux shell 基礎語法A 1

從echo開始 echo可以看做print printf之類的東西。幾乎所有的shell指令碼都離不開echo。echo有如下幾個作用 1 輸出指令碼執行流程的提示資訊 2 互動式指令碼列印提示資訊 3 構建格式化的日誌 4 除錯指令碼時,可以用來列印出一些中間變數的值 當然也可以用bash x除錯...

linux shell程式設計基礎(基本語法)

通過終端編寫指令碼程式,輔助開發人員完成工程自動化操作 直接執行 需要執行許可權 列印完不換行 可以不加雙引號,但規範寫法要新增 不顯示輸入資訊 賦值 可以用雙引號也可以不用雙引號 name jackecho name name echo 001 if 條件 then 條件為true執行的 fiif...

linux shell 基本語法

從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等領域,shell程式設計仍然起著不...