繁体   English   中英

xargs 输入为空时运行默认命令

[英]Run a default command when xargs input is empty

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

在其中一行中,我使用 xargs 在每个可升级包上自动运行升级命令,而无需执行 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" }

在 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...>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM