使用 read() 或 run() 运行 bash 命令时,我应该如何转义“&&”和其他特殊字符?

Jer*_*ska 5 bash julia

我的代码:

df = read(`df -h|grep /dev/sda1 && df -h|grep pCloud`, String)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到来自 Julia 的以下消息:

df = read(`df -h|grep /dev/sda1 && df -h|grep pCloud`, String)
Run Code Online (Sandbox Code Playgroud)

我发现有人有类似的问题,但他们似乎没有逃避就解决了这个问题。

Ste*_*ski 10

Julia 命令不在 shell 中运行,因此使用类似的 shell 功能是行不通的。如果你想从一个命令到另一个命令,你应该使用该pipeline函数,如果你想测试命令或管道的成功或失败,请使用该函数运行它success。在这种情况下,您可以这样做:

success(pipeline(`df -h`, `grep /dev/sda1`)) &&
success(pipeline(`df -h`, `grep pCloud `))
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,您可以调用df -h一次并执行

df = read(`df -h`, String)
contains(df, "/dev/sda1") && contains(df, "pCloud")
Run Code Online (Sandbox Code Playgroud)