如何在R语言中使用变量调用Linux/Unix命令
解决R调用BASH命令时变量拼接不执行的问题
问题根源
你之前的代码只是生成了包含system函数的字符串,但没有实际调用system去执行这个bash命令,所以只有字符串输出,没有触发实际操作。
正确实现方式
方式1:分步拼接命令再执行
PATH_UNIX <- "/mnt/c/Users/user00/a01_TEST/" FILENAME_TEST <- "a01_test.txt" # 拼接完整的bash命令逻辑 bash_command <- paste0("ls -al ", PATH_UNIX, " > ", PATH_UNIX, FILENAME_TEST) # 传给system函数执行bash命令 system(paste0("bash -c '", bash_command, "'"))
方式2:简洁的直接拼接
PATH_UNIX <- "/mnt/c/Users/user00/a01_TEST/" FILENAME_TEST <- "a01_test.txt" # 直接在system参数里完成变量拼接 system(paste0("bash -c 'ls -al ", PATH_UNIX, " > ", PATH_UNIX, FILENAME_TEST, "'"))
优化建议:用file.path处理路径
为了避免手动拼接路径时出现分隔符错误,推荐用R的file.path函数生成输出文件的完整路径:
PATH_UNIX <- "/mnt/c/Users/user00/a01_TEST/" FILENAME_TEST <- "a01_test.txt" # 自动生成正确的文件路径 output_file <- file.path(PATH_UNIX, FILENAME_TEST) # 执行命令 system(paste0("bash -c 'ls -al ", PATH_UNIX, " > ", output_file, "'"))
验证方法
执行完代码后,前往/mnt/c/Users/user00/a01_TEST/目录查看a01_test.txt,应能看到file_01.txt到file_05.txt的完整列表信息。
内容的提问来源于stack exchange,提问作者Mark Chikka
相关产品推荐
相关产品推荐

