在bash和R之间共享配置变量

时间:2019-03-12 16:18:44

标签: r bash configuration yaml config

我需要在各种R和bash程序之间共享配置变量。它们都共享各种资源,尤其是GRASS数据库。

我首先创建一个bash脚本,该脚本设置了shell变量,然后运行R程序。这样R就看不到shell变量了:

$ cat testVars.R
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA" 
Rscript testVars.R
$ ./testVars.sh
WDIR GDIR 
  ""   "" 

然后,我尝试在R中使用readRenviron函数,以为可以用来设置变量的bash文件的源代码。但是,这导致了另一个问题,R无法像bash一样替换和连接变量:

$ cat testVars.R
readRenviron("./testVars.sh")
Sys.getenv(c("WDIR","GDIR"))
$ cat testVars.sh
#!/bin/sh
WDIR="/Work/Project/"
GDIR=$WDIR"GRASSDATA" 
$ Rscript testVars.R
            WDIR             GDIR 
"/Work/Project/" "$WDIRGRASSDATA"  
两种语言在某种程度上都支持

YAML,但是它受same lack of replacement and concatenation facilities的影响。例如,使用YAML,我需要在配置文件中无数次重复工作目录。

这就是我要寻找的:一种配置格式,R和bash都可以使用,并且还允许变量串联。

0 个答案:

没有答案