* wildcard in.sh script

Aiza aiza21 at comclark.com
Wed Jun 16 00:14:44 UTC 2010


Chip Camden wrote:
> On Jun 15 2010 17:06, Aiza wrote:
>> Aiza wrote:
>>> I have a directory with files in it. The first 3 letters of the file 
>>> names is the group prefix. I'm trying to write a script to accept the 3 
>>> letter of the group followed by a * to mean its a prefix lookup. But 
>>> when I run it I get a message "NO match" that is not issued by the 
>>> script. Its like * is not allowed as input.
>>>
>>> Looking for sample .sh code for handling this standard type of lookup or 
>>> some online tutorial that has sample code for bourne shell programming.
>>>
>>
>>
>> Here is the code
>>
>>   prefix_name1=$1
>>   prefix_name2=`echo -n "${prefix_name1}" | sed 's/*.*$//'`
>>   echo "prefix_name1 = ${prefix_name1}"
>>   echo "prefix_name2 = ${prefix_name2}"
>>
>>
>>   if [ ${prefix_name1} -nq ${prefix_name2} ]; then
>>   echo "prefix_name2 = ${prefix_name2}"
>>   fi
>> exerr "hard stop"
>>
>>
>> Here is the test and out put
>> # >admin cell*
>> admin: No match.
>>
> 
> As others have mentioned, you need to quote or escape the * in the
> command line:
> 
> admin "cell*"
> 
> You've also botched your regex (/*.*$/) -- it can't begin with a *.  What exactly
> are you trying to match?
> 
As shown in the posted test results you can see that the * is removed 
from the input cell* and becomes cell and then cell* is compared to cell 
to determine if a search by prefix command was entered on the script 
command line. So the regex (/*.*$/) is working as coded as long as the 
script command line is coded like this "cell*".


More information about the freebsd-questions mailing list