2017-08-30 60 views
0

目的:
- script-0.sh:產生無限的輸出行。
- script-1.sh:將一行作爲輸入,如果該行包含模式X,則它必須終止script-0.sh。如何使用<ctrl> c從script-1.sh中終止script-0.sh?

建議的部分解決方案:
- 運行:./script-0.sh | ./script-1.sh PID。
- 如果script-1.sh在其輸入中檢測到模式X,它會調用'kill -INT PID'並因此殺死script-0.sh。

問題:
- 如何爲變量PID分配正確的值?

+0

您要求x,但標題要求y(您已經擁有解決方案)。 – fancyPants

+0

@fancyPants'kill -INT'與單擊ctrl-c相同,但是標題確實相互矛盾 – paper1111

+0

標題可能有點不清楚。標題表示一般情況,爲此我確實有一個解決方案。但是對於這個特定的用例,我沒有解決方案......我希望這能夠解決它。 – MuadDev

回答

0

你可以做的就是將PID寫入文件,然後使用echo $$ >> somefile.pid(它將輸出PID並將其連接到文件)從想要用來殺死另一個腳本的腳本中讀取它,這裏詳細說明https://askubuntu.com/questions/526886/stopping-a-running-script-though-another-script-file

+0

謝謝你的回答。這個解決方案並不像我所希望的那樣「漂亮」,但仍然可能是有效的。我會試試這個報告。如果任何人有另一種解決方案,不涉及使用額外的文件,我將不勝感激。 – MuadDev

+0

@MuadDev你可以做的另一件事是將第一個腳本的PID作爲參數傳遞給第二個腳本,但是在腳本內部,通過調用第一個腳本內部並使用'$$'以'$ 1'獲取它。當然是 – Agustin

+0

!這可能是一個很好的解決方案,謝謝。 – MuadDev