bash - 如果 xargs 没有参数,请提前退出管道
问题描述
假设我有这个管道:
pgrep -P $$ | xargs kill -INT; sleep 0.6; pgrep -P $$ | xargs kill -9;
如果 xargs 没有参数,我想要做的是避免睡眠调用。
像这样的东西:
pgrep -P $$ | (exit if no args) | xargs kill -INT; sleep 0.6; pgrep -P $$ | xargs kill -9;
我怎样才能干净地做到这一点?我不想弄乱管道并得到奇怪的错误。
解决方案
GNUxargs
有-r
专门针对这个用例的选项。您必须稍微重构脚本;我会简单地去
pgrep -P $$ | xargs -r kill -INT
( sleep 0.6; pgrep -P $$ | xargs -r kill 9 ) &
如果第一个命令设法杀死所有子进程,则第二个命令最终将成为无操作。
这不能移植到xargs
缺少此选项的 *BSD 等。
推荐阅读
- go - 在 go 中动态调用模型
- android - 在 Android Q 上更改专辑封面
- java - 如何在android中获取scrolltoposition结束事件
- c - 我们如何创建一个递归函数来查找数字的最高位?
- c# - 我无法创建图片框列表,索引超出数组 C#
- google-app-engine - appengine / 无法部署 / iam 故障排除
- linux - 如何在 Linux 上的 Common Lisp 中对文件进行内存映射?
- javascript - 如何使用 css 并基于当前宽度创建进度条
- python - 服务器未能恢复事务。描述:9800000002。(3971) (SQLEndTran)')
- firebase - 在 Firebase Authenticator Flutter 之前验证用户输入