Check if any of the parameters to a bash script match a string
It looks like you're doing option handling in a shell script. Here's the idiom for that:
#! /bin/sh -
# idiomatic parameter and option handling in sh
while test $# -gt 0
do
case "$1" in
--opt1) echo "option 1"
;;
--opt2) echo "option 2"
;;
--*) echo "bad option $1"
;;
*) echo "argument $1"
;;
esac
shift
done
exit 0
(There are a couple of conventions for indenting the ;;
, and some shells allow you to give the options as (--opt1)
, to help with brace matching, but this is the basic idea)
This worked for me. It does exactly what you asked and nothing more (no option processing). Whether that's good or bad is an exercise for the poster :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
This takes advantage of special handling of $*
and bash super-test [[
…]]
brackets.
How about searching (with wildcards) the whole parameter space:
if [[ $@ == *'-disableVenusBld'* ]]
then
Edit: Ok, ok, so that wasn't a popular answer. How about this one, it's perfect!:
if [[ "${@#-disableVenusBld}" = "$@" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2: Ok, ok, maybe this isn't perfect... Think it works only if -param is at the start of the list and will also match -paramXZY or -paramABC. I still think the original problem can be solved very nicely with bash string manipulation, but I haven't quite cracked it here... -Can you??