On 06/27/2012 09:25 AM, Aleksandr Miroslav wrote:
hello,I'm not sure if this is the right forum for this question, but here goes. I have the following in a shell script: #!/bin/sh if [ "$#" -eq "0" ]; then find /foo fi if [ "$#" -eq "1" ]; then find /foo | grep -i $1 fi if [ "$#" -eq "2" ]; then find /foo | grep -i $1 | grep -i $2 fi if [ "$#" -eq "3" ]; then find /foo | grep -i $1 | grep -i $2 | grep -i $3 fi Is there an easier/shorter way to do this? If there are 15 arguments supplied on the command line, I don't necessarily want to build 15 if statements. Thanks in advance for your answers.
The following solution relies on the fact that you can include multiple patterns for grep to match with the '-e' argument: #!/bin/sh PATTERNS=`echo " $*" | sed s/\ /\ -e\ /g` find /foo | grep $PATTERNS Notice that when constructing the $PATTERNS string out of the command line args, you have to quote them with a prepended space character. That's because the subsequent 'sed' substitution needs to find a space *before* each argument which it then replaces with "-e ". ----------------------------------------------------------------------- Tim Daneliuk _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[email protected]"
