shell中訊號以及bash的除錯方法和內部命令

2021-07-22 19:12:43 字數 1645 閱讀 6238

1、trap命令用於在shell程式中捕捉到訊號,之後可以有三種反應方式:

①執行一段程式來處理這一訊號

②接收訊號的預設操作

③忽視這一訊號

trap對上面三種方式提供了三種基本形式:

第一種:形式的trap命令在shell接收到signal list清單中數值相同的訊號時,將執行雙引號中的命令串(trap 'commands' signal-list    trap "commands" signal-list)

為了恢復訊號的預設操作,使用第二種形式的trap命令:trap signal-list

第三種形式的trap命令允許忽略訊號:trap 「 」 signal-list

注意:(1)對訊號11不能捕捉,因為shell本身需要捕捉該訊號去進行記憶體的轉存

(2)在trap中可以定義對訊號0的處理,shell程式在其終止時發出該訊號

(3)在捕捉到signal-list中指定的訊號並執行完相應的命令之後,如果這些命令沒有將shell程式終止的話,shell程式將繼續執行收到訊號時所執行的命令後面的命令,這樣將很容易導致shell程式的無法終止

另外,在trap語句中,單引號和雙引號是不同的

2、執行shell程式的方法有三種:

①sh shell程式檔名,格式為:bash shell程式檔名

②sh。格式為:bash

③用chmod命令使shell稱為可執行

在這三種執行shell程式的方法中,最好的按下面的方式選擇:當剛建立乙個shell程式,對它的正確性還沒有把握時,應當使用第一種方式進行除錯;當乙個shell程式已經除錯好時,應使用第三種方式把它固定下來,以後只要鍵入相應檔名即可,並可被另乙個使用

3、bash程式的除錯

呼叫bash的形式為:bash -選擇項shell程式檔名

幾個常用的選擇項為:

(1)-e:如果乙個命令失敗就立即退出

(2)-n:讀入命令但是不執行它們

(3)-u:置換時把未設定的變數看作出錯

(4)-v:當讀入shell輸入行時把它們顯示出來

(5)-x:執行命令時把命令和它們的引數顯示出來

①未置變數退出和立即退出

未置變數退出特性允許使用者對所有變數進行檢查,如果引用了乙個未賦值的變數就終止shell程式的執行

②shell程式的跟蹤

除錯shell程式的主要方法是利用shell命令解釋程式的「-v」或「-x」選項來跟蹤程式的執行。

4、bash的內部命令

(1)echo,命令格式為:echo arg      功能:在螢幕上列印出由arg指定的字串

(2)eval,命令格式為:eval args       功能:當shell程式執行到eval語句時,shell讀入引數args,並將他們組合成乙個新的命令,然後執行

(3)exec:命令格式:exec命令命令引數    功能:當shell執行到exec語句時,不會去建立新的子程序,而去轉去執行指定的命令,當指定的命令執行完時,該程序,也就是最初的shell就終止了,所以shell程式中exec後面的語句將不再被執行

(4)export,命令格式為:export變數名或:export變數名=變數值

(5)readonly,命令格式為:readonly變數名

(6)read,命令格式為:read變數名錶

(7)shift 語句

python中訊號說明以及操作

訊號 乙個程序向另乙個程序通過訊號傳遞某種資訊 kill l 檢視訊號 kill signame pid 給pid的程序傳送乙個訊號 關於訊號 訊號的名稱 系統定義,訊號的名字 訊號的含義 系統定義,訊號的作用 訊號的預設處理方法 系統定義,訊號給接收程序帶來的行為 終止 暫停 忽略 python如...

Qt中訊號槽的概念

qt中訊號槽的概念 發表日期 2010 11 24 訊號槽是qt中特有的概念。它使得程式設計師將不同的object繫結起來,而object物件間並不需要對相互了解。slots也是普通的c 方法,它們可以是virtual 可以被過載 可以使private protected public,可以像其它c...

Altiumdesign中訊號層的使用

1pcb訊號層是同頂層 底層佈線相同的銅導電層,只不過是夾在頂層和底層之間的佈線層。每層都會有電源層。2而內部導電層 內電層 是內部電源和地層 並通過通孔與各層貫通的層 內電層設計時和訊號層佈線相反,因為它是負片 不畫線的地方是有銅導電層,設計劃線的地方是沒有導電銅層的,這就是它們的區別。3內電層主...