R中的`Terminal` vs`ystem()`
发布时间:2020-12-15 22:04:07 所属栏目:安全 来源:网络整理
导读:我尝试在R中运行以下命令 system("Message=HelloWoRld;echo $(sed 's/R/r/' (echo ${Message}))") 但它失败了 Message=HelloWoRldecho $(sed 's/R/r/' (echo ${Message})) 复制粘贴在终端时工作正常.这个问题似乎与(..)有关.当我做哪个bash或系统(“哪个bash
我尝试在R中运行以下命令
system("Message=HelloWoRld;echo $(sed 's/R/r/' <(echo ${Message}))") 但它失败了 Message=HelloWoRld echo $(sed 's/R/r/' <(echo ${Message})) 复制粘贴在终端时工作正常.这个问题似乎与<(..)有关.当我做哪个bash或系统(“哪个bash”)时,我得/ bin / bash. 为什么通过system()或直接在终端窗口上执行相同的命令不会产生相同的输出? 仅供参考,我使用的是Mac OS X 10.11.3. Bash是GNU bash,版本3.2.57(1),R是R版本3.2.3. 解决方法
system不是终端模拟器,它没有运行Bash.你的终端运行Bash.要在系统中获得相同的效果,请在Bash中运行命令.例如.
system('bash -c 'echo $(date)'') 更重要的是,您当前的Bash命令非常复杂,并使用不必要的命令调用;你可以通过更简单的方式实现同??样的目标 sed s/R/r/ <<< $Message @chepner提出了另一个解决方案可以直接在系统中使用而无需将执行传递给Bash的优点: system("Message=HelloWoRld; echo $Message | sed 's/R/r/'") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |