腳本編程知識點(幫你寫好shell腳本)

在腳本編程中,我們會遇到各種各樣需要獨特方式的來表述需求的地方,那麼我們就係要一些小技巧來完成,今天我們就來討論關於腳本的知識點及實例演示。

1、 變量中字符的長度

${#變量名 }

例:顯示star的字符長度 A=star echo${#A}”

2、 變量賦值

我們在使用read時希望用戶給一個值,但如果用戶沒有給值時,腳本就會報錯,那麼我們就需要給出一個默認值來避免錯誤,這就是變量賦值,格式如下:

${變量名:-word}:如果變量爲空或未定義,則變量展開爲“word”;否則,展開爲parameter的值;

例:當A爲空時,顯示A30.   A=””  echo ${A:-30}

${變量名:+word}:如果變量爲空或未定義,不做任何操作;否則,則展開爲“word”值;

例:當A3時,顯示A30.   A=3  echo ${A:+30}

${變量名:=word}:如果變量爲空或未定義,則變量展開爲“word”,並將展開後的值賦值給變量;

${變量名:offset}

${變量名:offset(數字):length(數字)}:取子串,從offset處的後一個字符開始,取lenth長的子串;

例:取hello後三位llo. A=”hello”  echo ${A:2:3}

3、腳本配置文件

/etc/rc.d/init.d/服務腳本

服務腳本支持配置文件,存放/etc/sysconfig/目錄下,起名和服務腳本同名的配置文件

 

4、局部變量

local 變量名=:只在變量裏有效,不在全局有效。

例:編寫腳本

a=1

 

test() {

  a=$[3+4]

}

 

test

for I in `seq $a 10`; do

  echo $I

done 

其腳本執行結果爲7 8 9 10.而想讓變量中的賦值不用在全局只要在a=$[3+4]前加local

5、命令mktemp

創建臨時文件或目錄

 

mktemp /tmp/file.XX

       -d: 創建爲目錄

      

6、信號

進程間通訊的方式,是一個進程發送給另一個進程的短小信息,用於進行控制其運行機制的。

kill –SIG信號 PID

       1: HUP當用戶退出shell時,由該shell啓動的所有進程將收到這個信號,默認動作爲終止進程

       2: INT當用戶按下了<Ctrl+C>組合鍵時,用戶終端向正在運行中的由該終端啓動的程序發出此信號。默認動作爲終止里程。

       9: KILL(ctrl+\)無條件終止進程。本信號不能被忽略,處理和阻塞。默認動作爲終止進程。它向系統管理員提供了可以殺死任何進程的方法。

       15: TERM程序結束信號,與SIGKILL不同的是,該信號可以被阻塞和終止。通常用來要示程序正常退出。執行shell命令Kill時,缺省產生這個信號。默認動作爲終止進程。

      

腳本中,能實現信號捕捉,但915無法捕捉

trap命令:

       trap  '命令' 信號列表

例:捕捉SIGINT信號後輸出you gou.  Trap ‘echo “you go”’ SIGINT

      

7、一行執行多個語句,語句間用分號分隔

例:同時進行echoping命令  ping 192.168.0.1echo no more”

 

以上就是關於腳本編程中的常用技巧,雖然簡單但很使用。謝謝大家的參與。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章