2013-03-17 50 views
4

我有以下bash腳本test.sh如何退出從bash腳本創建的ssh會話?

#!/bin/bash 
ssh -o "StrictHostKeyChecking no" [email protected]$1 
#do some stuff 
exit 

但是,如果我運行此腳本./test.sh我需要輸入CTRL + d走出SSH會話和它看起來好像exit命令不工作我打算的方式。

有什麼辦法可以退出這個bash腳本創建的ssh會話嗎?

回答

13

你可能想如果你的代碼<<-ENDHERE在這裏文檔的每一行的初始空格或製表符被抑制編寫一個here document

#!/bin/bash 
ssh -o "StrictHostKeyChecking no" [email protected]$1 << ENDHERE 
    here do some remote stuff 
    also here 
    exit 
ENDHERE 

。參數(如$foo)將被替換,除非您的代碼爲<<\ENDHERE,並且ENDHERE實際上可以是任何單詞,通常以大寫字母表示。

閱讀Advanced Bash Scripting guide(其中確實有一些不完善的地方),如果你想退出shell腳本如果SSH會話中斷

+1

也使用ssh -T,如果你不想要一個TTY – Paul 2013-03-17 08:38:34

+1

,加上'exec'在'ssh'之前。 – 2013-03-17 10:02:21

+0

HERE實施有一些問題。首先,你不能通過HERE文檔來申請。有關更多信息,請參閱http://thornelabs.net/2013/08/21/simple-ways-to-send-multiple-line-commands-over-ssh.html的結尾。 – and0rsk 2014-10-06 03:20:53