Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Slightly OT: Error-Handling in a Pipeline, preferably non-zsh
- X-seq: zsh-users 7854
- From: Aaron Davies <agdavi01@xxxxxxxxxxxxxx>
- To: zsh-users@xxxxxxxxxx
- Subject: Slightly OT: Error-Handling in a Pipeline, preferably non-zsh
- Date: Sun, 15 Aug 2004 21:04:12 -0400
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
How do I do return-value error handling in the middle of a pipeline?
I'd ideally like to keep this to as basic a shell level as possible,
plain (Bourne) sh-compatible if it can be done, though a bash or zsh
solution will be fine if not. I'm tring to write a simple script that
will apply a command to all processes matching a name--sort of a
generalized "killall". At the moment, it looks like this:
#!/bin/sh
name=$1
shift
ps aux | grep $name | grep -v grep | grep -v $0 | awk '{ print $2 }' |
xargs $@
and it works fine, and I'd like to keep it at that level of simplicity.
The only thing is, I'd like to make it stop and return 1 if there are
no matching processes. (At the moment, it calls the command with an
empty argument list.) The intuitive thing to do seems to be
ps aux | grep $name | grep -v grep | ( grep -v $0 || exit 1 ) | awk '{
print $2 }' | xargs $@
but that doesn't work. Any ideas? (I could, of course, simply cache the
last grep's results in a tmpfile, test its length, and proceed
accordingly, but that doesn't seem quite as elegant.
--
Aaron Davies
agdavi01@xxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author