私のPATHを更新するためにbashスクリプトでExpectをどのように使用しますか? [閉鎖]

私のPATHを更新するためにbashスクリプトでExpectをどのように使用しますか? [閉鎖]

私は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

関連情報