如何在R中调用带read交互的bash脚本以支持用户输入?
解决方案
方法1:启用system()的交互模式
在system()命令中添加interactive=TRUE参数,强制子进程绑定当前终端的输入输出流,让bash的read命令能正常接收用户输入:
system("./test.sh", interactive = TRUE)
方法2:用交互bash执行脚本
如果是在纯终端环境运行R(非RStudio),可以直接调用交互模式的bash执行脚本,确保输入通道正常:
system("bash -i ./test.sh")
-i参数让bash以交互模式启动,完美适配需要用户输入的场景。
方法3:使用system2()替代system()
system2()是R提供的更现代的系统命令调用工具,默认对交互场景支持更好,显式指定输出参数后可直接对接终端:
system2("./test.sh", stdout = "", stderr = "")
额外注意事项
- 确保
test.sh有可执行权限,若没有可先运行chmod +x test.sh赋予权限; - 若在RStudio中运行,需确认
Tools -> Global Options -> Terminal中的配置允许子进程访问终端输入。
内容的提问来源于Stack Exchange,提问作者goblinshark
相关产品推荐
相关产品推荐

