链管| 和 &&

ana*_*nik 3 shell pipe exit-status

我有这个命令要过滤make输出:

cd /app && make && sudo nginx -g 'daemon off;'
Run Code Online (Sandbox Code Playgroud)

make | pv -q -L 100在这里插入的正确方法是什么?

Sté*_*las 9

问题是您将检查pv. 使用 POSIXsh语法,您可以执行以下操作:

cd /app && ((make 3>&- && exec sudo nginx -g 'daemon off;' >&3 3>&-) | pv -qL 100) 3>&1
Run Code Online (Sandbox Code Playgroud)

或与ksh/ bash/ zsh

(set -o pipefail
cd /app && make | pv -qL 100 && sudo nginx -g 'daemon off;')
Run Code Online (Sandbox Code Playgroud)

或与zsh

cd /app && make | pv -qL 100 && ((!pipestatus[1])) && sudo nginx -g 'daemon off;'
Run Code Online (Sandbox Code Playgroud)

或与bash

cd /app && make | pv -qL 100 && ((!PIPESTATUS[0])) && sudo nginx -g 'daemon off;'
Run Code Online (Sandbox Code Playgroud)

  • @techtonik,正如我所说,`PIPESTATUS` 用于`bash`。对于`sh`,使用第一个。 (2认同)