【问题标题】:Julia run/pipeline command translationJulia 运行/管道命令翻译
【发布时间】:2015-12-03 17:04:53
【问题描述】:

我在使用运行/管道命令时遇到了一些问题,我不确定我哪里出错了。我的目标是附加到日志并重定向 STDERR,以便错误将出现在日志中。我想要运行的命令行等效项(在终端运行时有效)如下:

/home/me/juliaScripts/runjob.jl $three $one $one >> /home/me/dailylog.txt 2>&1

我在 Julia 做的事情:

runstring=`/home/me/juliaScripts/runjob.jl $three $one $one`
run(pipeline(runstring,stdout="/home/me/dailylog.txt",stderr="/home/me/dailylog.txt",append=true))

我得到的错误是:错误:管道未定义 有没有更好的方法来使用 run 命令来实现我想要的(附加到日志并重定向 STDERR)?非常感谢。

【问题讨论】:

  • 刚刚实现管道功能在我的 .3.8 版本的 Julia 上不可用....有人知道早期版本的 Julia 的解决方法吗?

标签: unix command line julia


【解决方案1】:

有一个运行等效于 shell 命令的元解决方案,它是在 shell 中运行它。对于给出的示例:

bashcmd = "/home/me/juliaScripts/runjob.jl $three $one $one >> /home/me/dailylog.txt 2>&1"
run(`/bin/bash -c $bashcmd`)

这应该在版本 0.3 中工作,但 /bin/bash 可能需要替换为不同的路径(取决于您正在运行的 shell)。此外,$three $one $one 需要更加小心地转义(如果它们是简单的字母数字单词,应该可以)。

【讨论】:

    【解决方案2】:

    pipeline 命令是在 Julia 的 0.4 版中引入的。 如果你没有使用 0.4,我建议你升级。 (并排安装两个版本的 Julia 也没有问题。)

    【讨论】:

    • 不幸的是,目前这不是一个选项。我可以解决除 2>&1 之外的所有问题。知道如何使用反引号和/或其他运算符将其转换为 Julia?
    • 我不得不摆弄大量的引用来获得类似的工作。我的看起来像: readall($pathtobin arg1=makewidgets 'source='$sourcefile '/output='$resultsfile /format=png) readall(reg query 'HKEY_CURRENT_USER\Software\Someone\Product\Blah' /v BaseDirectory)
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多