我想验证rpms,在while循环中分配一些变量,并在循环内部做一些更多的处理。管道之前的命令返回代码
while read fstatus fname rc
do
echo "RC : ${lrc}"
done < <(rpm --verify apache2 | awk -vrc=$? '{printf "%s %s %s", $1, $NF, rc}')
有在循环几件事情,我想要做的只有我的返回代码是没有0(所以只有当转速验证失败)。 我不知道如何获得循环内的rpm --verify返回码。这个$?或PIPESTATUS分配不起作用。 我想我的问题是,pipe(awk在我的情况)之后的命令是否会知道管道之前的命令的返回码(rpm - 在这种情况下为verify)。
不,awk没有得到返回码,因为它在'rpm'完成之前运行。返回码仅返回到调用进程,即shell。 – Barmar
从http://mywiki.wooledge.org/ProcessSubstitution:无法从创建进程的shell中获取进程替换命令的退出代码substitution_ – Barmar
我认为您必须编写'rpm'' s输出到一个临时文件来解决这个问题。 – Barmar