xargs :在多个命令中使用相同的参数

JWL*_*JWL 19 command-line shell xargs

我正在尝试编写一个单行程序,可以df -h在其中一个分区超出 [或几乎] 空间时探测输出并发出警报。现在是使用 xargs 的部分让我大吃一惊......

echo 95 | xargs -n1 -I{} [ {} -ge 95 ] && echo "No Space on disk {}% full -- remove old backups please"
Run Code Online (Sandbox Code Playgroud)

我怎样才能让第二个 {} 也显示“95”?

ckh*_*han 28

&&不是xargs命令的一部分,它是一个完全独立的调用。我想你会想要显式执行一个子shell:

echo 95 | xargs -n1 -I_percent -- sh -c '[ _percent -ge 95 ] && echo "No Space on disk _percent% full -- remove old backups please"'
Run Code Online (Sandbox Code Playgroud)

另请注意,我正在使用_percent而不是{}避免在 shell 中引起额外的引用问题。它不是 shell 变量;仍然只是一个 xargs 替换字符串。