r - `Terminal` 与 R 中的 `system()`

标签 r bash macos

我尝试在 R 中运行以下命令

system("Message=HelloWoRld;echo $(sed 's/R/r/' <(echo ${Message}))")

但是它失败了,而

Message=HelloWoRld
echo $(sed 's/R/r/' <(echo ${Message}))

复制粘贴到终端时工作正常。该问题似乎与 <(..) 有关.当我做 which bashsystem("which bash") , 我得到 /bin/bash .

为什么通过 system() 执行相同的命令或者直接在终端窗口上不会产生相同的输出?


仅供引用,我在 Mac OS X 10.11.3 . Bash 是 GNU bash, version 3.2.57(1) R 是 R version 3.2.3 .

最佳答案

system 不是终端仿真器,也没有运行 Bash。您的终端运行 Bash。要使用 system 获得相同的效果,请在 Bash 中运行命令。例如

system('bash -c \'echo $(date)\'')

此外,您当前的 Bash 命令非常复杂,并且使用了不必要的命令调用;您可以通过更简单的方式实现相同的目的

sed s/R/r/ <<< $Message

@chepner 指出另一个解决方案可以直接在 system 中使用而无需将执行传递给 Bash:

system("Message=HelloWoRld; echo $Message | sed 's/R/r/'")

关于r - `Terminal` 与 R 中的 `system()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150367/

相关文章:

r - 与 R 中的 max.distance 相关的意外 agrep() 结果

R data.table 在所有行上应用具有多列输入的函数并获得合理的输出

linux - 将 "read"用于变量中未知数量的输入

ruby - Jekyll 不在本地提供站点服务

python - 在 MacOS 上安装和配置最新的 python 3.8 时出现问题

r - Shiny:在模块或嵌套模块中使用 uiOutput?

r - Tidyverse 可能存在也可能不存在的列的按行求和

linux - Bash:在模式之后将一个文件的内容插入到另一个文件中

linux - 为什么会在这里得到模糊重定向的错误?

objective-c - 处理 NSStatusItem 上左键和右键单击时出现问题