我正在使用 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