1

我需要检查 Debian 上 R 的管道命令的退出状态,就像这里一样,但无法echo "${pipestatus[1]}"使用system2/system函数从 R 成功运行。当我使用命令行时,该命令正常工作。

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

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

经过一些测试,我可以看到退出状态检查命令无法正确引用,但我无法找出正确的方法。

我正确地引用这个命令是问题吗?如何echo "${pipestatus[1]}"从 R 运行这个 () 命令?是否有任何替代方法可以使用相关命令检查退出状态?

4

1 回答 1

1

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

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

system2('zsh', c('-c', shQuote('false|true; echo "${pipestatus[1]}"')))
于 2020-11-04T11:12:52.190 回答