我想在远程服务器上执行一行:
ssh user@machine 'for i in 1 2; do echo "$i"; done'
如何使用system()
命令通过R将此命令发送到服务器?
问题是system()
需要一个用引号括起来的字符串,如果引用上面一行,引号会相互抵消。
答案 0 :(得分:5)
尝试转义引号:
ssh user@machine 'for i in 1 2; do echo \"$i\"; done'
我正在运行Windows而我没有名为ssh
的命令行工具,但我尝试了以下代码:
> system("java \"-version\"")
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
您会注意到我在-version
参数周围放置了转义引号,命令运行没有任何问题。您可以尝试与ssh
类似的东西,它应该可以工作。当然,在R中尝试之前,您应该先验证该命令是否可以从bash shell运行。