我對bash腳本還很陌生,而且我很難弄清楚爲什麼這個簡單的陷阱沒有按預期工作。爲什麼這個簡單的bash陷阱失敗
目標 - 創建可選等待期間,可以通過按CTRL + Ç被跳過。
緊迫的預期結果CTRL +Ç - 立即呼應 「!沒時間午睡」並退出。按壓的
實際結果CTRL + Ç - 立即回聲 「小睡之上」並退出。
#!/bin/bash
nonap() {
echo "No time for napping!"
exit
}
trap nonap INT
echo "Sleeping for 5 seconds, hit ctrl-c to proceed now."
sleep 5
echo "Naptime over."
爲什麼我的陷阱函數沒有被調用?
這工作對我很好。你的環境是什麼? – Adam
我只是(在bash 3.2.25古老的Linux)嘗試過了,在'trap.sh'保存你的代碼,跑'慶典trap.sh',並得到了:'睡5秒,按Ctrl-C現在繼續當我按照你的意料打斷時,接着是「沒時間打盹!」。 –
感謝您的反饋。至少我知道它*應該*按預期工作。我使用最新版本的Tinycore Linux和GNU bash,版本爲4.0.33(1)的版本(i686-pc-linux-gnu)。在打開一個新終端時,聲明-f nonap和trap都不返回任何輸出。運行此腳本並獲得「午睡」。輸出,'trap'返回'陷阱 - 「非AP」 SIGINT'和'聲明-f在我的腳本中定義nonap'返回的功能。 –