如何在 bash 脚本中使用 Expect 来更新我的 PATH?

如何在 bash 脚本中使用 Expect 来更新我的 PATH?

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

相关内容