Bash

陷阱處理程序不起作用?

  • May 18, 2018

以下陷阱有問題嗎?

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

引用自:https://unix.stackexchange.com/questions/421398