私はSSHを使用して大学サーバーに接続しています。ただし、R
ログインするたびにパスを更新する必要があります。だから私はそれを自動化したいと思い、これまでに次のスクリプトがあります:
#!/usr/bin/expect -f
spawn ssh user@server
expect "password:"
send "<pass>\r"
send 'export PATH=/usr/local/R-3.1.2/bin/:$PATH" R "$@"\r"
send 'R\r'
interact
ありがとうございます。
答え1
一重引用符にいいえExpect(Tclの拡張)における特別な意味。 TCLは別の引用符文字。
リモート接続を確立し、パスを設定し、残りのパラメータを使用してRを呼び出すとします。 Tclはコマンドライン引数を$argv
変数に格納します。
#!/usr/bin/expect -f
spawn ssh user@server
expect "password:"
send "<pass>\r"
# $PATH is already exported
send "PATH=/usr/local/R-3.1.2/bin/:\$PATH\r"
send [join [concat R $argv]]
sent "\r"
# do you then want to drop into an interactive R session?
send 'R\r'
interact