Linux
退出腳本但不退出 SSH 會話的命令
這是我在這裡的第一篇文章,我還不是 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 -t
orssh -tt
, 沒有先測試。