Linux

退出腳本但不退出 SSH 會話的命令

  • September 18, 2020

這是我在這裡的第一篇文章,我還不是 Linux /Bash 腳本專家。:-)

因此,我為我的 Raspberry Pi 編寫了以下程式碼,除了一個小問題外,它執行良好。

我正在使用 SSH 登錄樹莓派。當引腳 17 為高電平時(數字邏輯值 1 也就是 5 伏),我希望在終端輸出上列印消息“我注意到一個 1”,然後我想退出腳本並仍然保持登錄到樹莓派。

我面臨的問題是,當腳本看到邏輯值 1 時,它會關閉整個 ssh 連接並將我帶回筆記型電腦的終端會話。

我不希望腳本在引腳 17 讀取 1 時退出 ssh 連接。我只想讓它停止執行 scriot 並帶我回到我仍然登錄到樹莓派的樹莓派終端,以便我可以做其他事情東西。

我基本上不想在 scipt 退出時關閉 SSH 會話。你能給我一些建議來解決這個問題嗎?

感謝您的答复!

pin=17
gpio mode $pin in
while true; do
   if [[ $(gpio read $pin) -eq 1 ]]; then
       echo "I noticed a 1 whcih means I noticed 5 volts!"
       return
   elif [[ $(gpio read $pin) -eq 0 ]]; then
       echo "Did not see a 1, so I will keep looping"
       echo ""
       sleep 2
   fi
done

歡迎來到伺服器故障。嘗試使用以下程式碼:

pin=17
gpio mode $pin in
while true; do
   if [[ $(gpio read $pin) -eq 1 ]]; then
       echo "I noticed a 1 whcih means I noticed 5 volts!"
       kill -INT $$
   elif [[ $(gpio read $pin) -eq 0 ]]; then
       echo "Did not see a 1, so I will keep looping"
       echo ""
       sleep 2
   fi
done

我假設你做類似的事情

ssh raspberrypi /path/to/script

所以,是的,當腳本退出時,ssh 會話也結束了。

但是,在腳本中,不是退出,而是生成一個互動式 shell:

   if [[ $(gpio read $pin) -eq 1 ]]; then
       echo "I noticed a 1 whcih means I noticed 5 volts!"
       exec bash -li

這用互動式登錄 shell替換了正在執行的腳本程序。

可能需要ssh -tor ssh -tt, 沒有先測試。

引用自:https://serverfault.com/questions/1034263