The purpose of the scriptexec package is to enable quick and easy way to execute native scripts.
library(scriptexec)
# execute script text
output <- scriptexec::execute("echo Current Directory:\ndir")
cat(sprintf("Exit Status: %s Output: %s\n", output$status, output$output))
#> Exit Status: 0 Output: Current Directory:scriptexec.R scriptexec.Rmd
# execute multiple commands as a script
output <- scriptexec::execute(c("cd", "echo User Home:", "dir"))
cat(sprintf("Exit Status: %s Output: %s\n", output$status, output$output))
#> Exit Status: 0 Output: User Home:R lib workspace
# pass arguments to the script, later defined as ARG1, ARG2, ...
# and also pass some env vars
output <- execute("echo $ARG1 $ARG2 $MYENV", args = c("TEST1", "TEST2"), env = c("MYENV=TEST3"))
cat(sprintf("%s\n", output))
#> 0
#> TEST1 TEST3TEST1 TEST2 TEST3
# non zero status code is returned in case of errors
output <- scriptexec::execute("exit 1")
cat(sprintf("Status: %s\n", output$status))
#> Status: 1
cat(sprintf("%s\n", output))
#> 1
#>
# do not wait for command to finish
execute('echo my really long task', wait = FALSE)
#> $status
#> [1] -1
#>
#> $output
#> [1] "0"