I tried running the following in R
system("Message=HelloWoRld;echo $(sed 's/R/r/' <(echo ${Message}))")
but it fails, while
Message=HelloWoRld
echo $(sed 's/R/r/' <(echo ${Message}))
works fine when copy pasted in the terminal. The issue seems related to <(..). When I do either which bash or system("which bash"), I get /bin/bash.
Why does the same command via system() or directly on the terminal window does not yield to the same output?
FYI, I am on Mac OS X 10.11.3. Bash is GNU bash, version 3.2.57(1) and R is R version 3.2.3.
system is not a terminal emulator, and it’s not running Bash. Your terminal runs Bash. To get the same effect with system, run the command inside Bash. E.g.
system('bash -c \'echo $(date)\'')
What’s more, your current Bash command is quite convoluted and uses unnecessary command invocations; you can achieve the same via the much simpler
sed s/R/r/ <<< $Message
@chepner makes the excellent point that another solution can be used directly in system without need to pass execution to Bash:
system("Message=HelloWoRld; echo $Message | sed 's/R/r/'")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With