Bash
陷阱處理程序不起作用?
以下陷阱有問題嗎?
trap cleanup SIGINT cleanup() { echo "Exiting script ..." }
echo
擊中時我從未看到命令Ctrl+c
while
該片段位於具有一些無限循環的較大腳本的底部。$ bash --version GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
陷阱必須在您按下 時已啟動/安裝
Ctrl+C
,否則(顯然)不會觸發。該功能也應該在那時定義。這意味著將程式碼移動到腳本的頂部(在開頭的某個位置)。此外,您可能應該在安裝陷阱之前定義函式,否則如果在兩者之間觸發陷阱,您將收到“未找到”錯誤。
例子:
#!/bin/bash cleanup() { echo 'Exiting script ...'; } trap cleanup SIGINT sleep 300