rpm --test 从不 return 非空字符串?
rpm --test never return a non-empty string?
我已经在这里找到了一个很好的答案 (Test if a command outputs an empty string)
我正在尝试将其应用于 rpm -e --test 命令。我希望能够在将包放入要删除的列表之前检查依赖项。所以我的简单脚本到目前为止看起来像这样:
for PKG in pkg1 pkg2
do
if [[ $(rpm -e --test $PKG) ]]; then
echo "there are dependencies for $PKG"
else
echo "remove $PKG"
fi
done
然而,无论一个包是否有依赖项,我总是会遇到 else 情况。关于如何以不同的方式处理这个问题有什么想法吗?
rpm -e --test
命令将return一个退出代码表明测试是否成功。比较一下:
# rpm -e --test openssh
error: Failed dependencies:
openssh is needed by (installed) connect-proxy-1.100-12.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-server-7.2p2-3.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-clients-7.2p2-3.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-askpass-7.2p2-3.fc23.x86_64
# echo $?
1
对比:
# rpm -e --test figlet
# echo $?
0
所以你可以这样写:
for pkg in pkg1 pkg2; do
if rpm -e --test $pkg > /dev/null 2>&1; then
echo "remove package"
else
echo "$pkg has dependencies"
fi
done
如果可能,通常最好使用退出代码来确定
程序的成功或失败(因为输出通常是设计的
供人类使用,并且可以从一个版本更改为下一个版本)。
我已经在这里找到了一个很好的答案 (Test if a command outputs an empty string)
我正在尝试将其应用于 rpm -e --test 命令。我希望能够在将包放入要删除的列表之前检查依赖项。所以我的简单脚本到目前为止看起来像这样:
for PKG in pkg1 pkg2
do
if [[ $(rpm -e --test $PKG) ]]; then
echo "there are dependencies for $PKG"
else
echo "remove $PKG"
fi
done
然而,无论一个包是否有依赖项,我总是会遇到 else 情况。关于如何以不同的方式处理这个问题有什么想法吗?
rpm -e --test
命令将return一个退出代码表明测试是否成功。比较一下:
# rpm -e --test openssh
error: Failed dependencies:
openssh is needed by (installed) connect-proxy-1.100-12.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-server-7.2p2-3.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-clients-7.2p2-3.fc23.x86_64
openssh = 7.2p2-3.fc23 is needed by (installed) openssh-askpass-7.2p2-3.fc23.x86_64
# echo $?
1
对比:
# rpm -e --test figlet
# echo $?
0
所以你可以这样写:
for pkg in pkg1 pkg2; do
if rpm -e --test $pkg > /dev/null 2>&1; then
echo "remove package"
else
echo "$pkg has dependencies"
fi
done
如果可能,通常最好使用退出代码来确定 程序的成功或失败(因为输出通常是设计的 供人类使用,并且可以从一个版本更改为下一个版本)。