gpt4 book ai didi

shell - 防止 POSIX xargs 尝试运行空命令

转载 作者:行者123 更新时间:2023-12-04 19:02:27 28 4
gpt4 key购买 nike

我不太擅长 bash,但我正在尝试创建一个脚本来杀死一些 Java 进程:

/usr/ucb/ps -auxww    \
| grep 'XUnit' \
| grep -v 'grep' \
| cut -c -2000 \
| awk '{print $2;}' \
| xargs kill
cut在这里使用是因为 awk可能会因行过长而失败(请参阅 POSIX specification for awk 中对 LINE_MAX 限制的引用)。

没有此类进程时会出现问题 - xargs尝试运行 kill没有参数,导致错误。

我的 xargs 不接受 -r--no-run-if-empty args,如对 a related question that doesn't specify POSIX compliance 的回答所建议的.

最佳答案

具体解决手头的问题,忽略手头的方法实际上是否是杀死进程的合适方法:

xargs sh -c '[ $# -gt 0 ] && exec "$0" "$@"' kill

这种方法有 xargs启动一个 shell,它查看其参数列表的长度(如果只有 kill 被传递,它将为 0,因为 -c 'script' 后面的参数以 $0 开头,不包括在 $# 计数中);如果至少给出了一个参数,该 shell 只会运行给出的命令。

关于shell - 防止 POSIX xargs 尝试运行空命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440312/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com