2013-11-01 33 views
4

我想使用tail命令來觀察並繼續我的腳本。 當我按下「Ctrl + C」鍵時,我不想停止整個腳本。 有什麼好方法嗎?如何在沒有完成shell腳本的情況下使用tail -f?

#!/bin/sh 
tail -f ./a.txt 
echo "I want to print this line after tailing" 
+0

這不是一個編程問題 - 它屬於superuser.com –

+0

@GeorgeJempty所以SO經常對現場shell編程提出疑問。 Superuser.com會偏向於系統管理和操作問題等。雖然有時可能會有細線。 – lurker

回答

4

你可以嘗試這樣的事:

#!/bin/sh 
trap ctrl_c INT 

function ctrl_c() { 
    echo "You slay me!" 
} 

tail -f ./a.txt 
echo "I want to print this line after tailing" 

在您要還原到默認爲Ctrl-C行爲tail -f完成後或更高一點,你可以這樣做:

trap - INT 

或者你可以通過聲明一個新的陷阱功能「定製」中斷:

#!/bin/sh 
trap ctrl_c INT 

function ctrl_c() { 
    echo "You slay me!" 
} 

function my_default_ctrl_c() { 
    echo "You just interrupted me!" 
    exit 1 
} 

tail -f ./a.txt 
echo "I want to print this line after tailing" 

trap my_default_ctrl_c INT 

在這裏,鍵盤上的後續Ctrl-C會中斷腳本並給出一個自定義消息「您剛打斷了我!」。

+1

+1您可能想要在'tail'命令之後添加'trap-INT'以恢復默認的'INT'處理程序。 – chepner

+0

@chepner是的,很好的建議。 – lurker

相關問題