Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
zparseopts help
- X-seq: zsh-users 19770
- From: TJ Luoma <luomat@xxxxxxxxx>
- To: Zsh-Users List <zsh-users@xxxxxxx>
- Subject: zparseopts help
- Date: Fri, 23 Jan 2015 10:39:32 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=fJmrFjePoJHAYwpTbsm4p/viVvIUTn3qYiTbPguexAo=; b=HLS+Ny0w1yudSd7LM7zyMqTvZ9ZaE2IHeKnWRdh1lNhuNMti1HjRHBoGzNZT9rOER4 nr+Zfis094Sgdc50sSQYuYMIZcl5BXdRiHUu3m6C+g8l6bU6OqUKec6ZBbRtygWbBf5C B5KT2bEsnOBRTeLxrfFe5HPqRGhVukiBauOLJ/qck7C1Uv+K7hN+eHOKp+kMyPlwu1X9 44tK5MadAn2HZ3x3AKiNwcctF3IdLid3k/ZPP6OBxLA2OahjjHw7MJnyrZiiTWL5l1C9 FnpLB2Qq8MbYGRT/rIqSfA5vWp8iMxiKqVaErGh55T75xiA2BmeikOMu1b1AwY3YnyRo qwsA==
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
As I've mentioned before, I have been using zsh forever but feel like I
missed out on learning about 97% of what it can do.
For example, today I learned about zparseopts.
(Feel free to mock.)
I took a look through the `man` entry, but… I don't know what it is about
my brain, but I can read and re-read man pages and still fail to understand
what it is saying. I do much better with examples.
I did some googling and found
http://emg-2.blogspot.com/2008/01/zsh-unique-features.html and once I had
that I could go back and look at the `man` page to understand what it was
doing.
So here is my first attempt at using `zparseopts`:
zparseopts -D -E -A MyVariableNameHere -- a b -orange -grape -apple
if (( ${+MyVariableNameHere[-a]} )); then
echo "Apple";
fi
if (( ${+MyVariableNameHere[--apple]} )); then
echo "Apple";
fi
if (( ${+MyVariableNameHere[-b]} )); then
echo "Banana";
fi
if (( ${+MyVariableNameHere[--orange]} )); then
echo "orange";
fi
if (( ${+MyVariableNameHere[--grape]} )); then
echo "grape";
fi
Questions:
1. Is there a way to combine the -a and --apple statements into one?
2. Are a series of 'if' statements the best way to handle these sorts of
options?
What I have been doing is something like this:
for MyVariableNameHere in "$@"
do
case "$MyVariableNameHere" in
-a|--apple)
echo "Apple"
shift
;;
-b|--banana)
echo "Banana"
shift
;;
esac
done
but that has the disadvantage of not being able to parse "-ab" as two
separate arguments. OTOH it's very readable and I don't have to worry about
very many chances of missing a closing bracket or brace!
TjL
ps - if anyone knows of a good place for zparseopts examples, please let me
know. Google was not very much help.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author