![내 PATH를 업데이트하기 위해 bash 스크립트에서 Expect를 어떻게 사용합니까? [폐쇄]](https://linux55.com/image/106984/%EB%82%B4%20PATH%EB%A5%BC%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20Expect%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
저는 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