当"xargs"输入为空时,执行默认命令



标题不言自明。我正在编写一个bash脚本,它将管理我所有的包(更新,升级每个可升级的apt和flatpak包以及删除不需要的包)。

在其中一行中,我使用xargs在每个可升级的包上自动运行upgrade命令,而不必执行while循环。我想重复一句简单的话:"没有需要升级的软件包"。在没有的情况下

我已经试过这行了,但是没有成功

apt-get -s --no-download upgrade -V | grep '=>' | awk '{print $1}' | { sudo xargs --no-run-if-empty apt-get --only-upgrade upgrade -y } || { echo "No package to upgrade" }

有没有办法运行"default"在xargs为空的情况下的命令?

你可以创建一个像这样的函数

if_not_empty() {
read -r -t 1 line
if [[ -z "$line" ]]; then
echo "$1" >&2
echo "empty"
exit 0
fi
echo "$line"
exec cat -
}

,然后将其包含在您的管道中

mycommand | if_not_empty "No packages to upgrade" | xargs -E empty <other-xargs-args...>

最新更新