如何使用 R 中的以下命令:echo "${pipestatus[1]}"?

How to use the following command from R: echo "${pipestatus[1]}"?

我需要在 Debian 上检查来自 R 的管道命令的退出状态,例如 here,但无法使用 system2 从 R 成功创建 运行 echo "${pipestatus[1]}" /system 函数。当我使用命令行时,该命令正常工作。

我尝试在 R 中使用的命令如下所示(我使用的 shell 是 zsh):

system2("false", args = "|true;echo '${pipestatus[1]}'")

经过一些测试,我发现无法正确引用退出状态检查命令,但我想不出正确的方法。

我正确地引用这个命令是问题所在吗?如何从 R 运行 这个 (echo "${pipestatus[1]}") 命令?除了使用有问题的命令检查退出状态之外,还有其他选择吗?

您不能在此处使用 zsh 功能,因为 system2 不会调用 shell。

相反,您需要使用原始 system 调用,或者更好的是,显式调用 system2 中的 shell。您还需要在 ${pipestatus[1]} 周围使用双引号而不是单引号以允许扩展——否则 zsh 会将其解释为文字字符串。

system2('zsh', c('-c', shQuote('false|true; echo "${pipestatus[1]}"')))