I recently ran the following command from the command line and it worked
find . -name '*jrAPS*_ouput.log' -exec grep '<string expression>' {}\; -print

I put it in a shell script like this and it did not work
find . -name \'*jrAPS*_output.log\' -exec grep \'<string expression>\' {} \\\; -print

the result was find: incomplete statement why?

Recommended Answers

All 9 Replies

On my system, I don't need to perform all the escaping that you are doing. The same command that I use on the command line works in the shell script because nothing is interpreting the command before executing it. However, if you have another shell reading commands from this script and executing them, then you would need the escapes. If that doesn't help use bash -n $0 where $0 is your current command line to see if you have syntax errors before running. Sometimes the error messages are slightly different (or more of them) when just analyzing.

Thanks I will do that do you know any Linux servers I can get access to on the net to try this.?

Sorry, I don't know of any public Linux Servers.
If you need an easy install try Xandros Open Edition. You answer 5 or 10 questions, wait about 30 minutes and voila instant Linux - with sound and networking. http://www.xandros.com

Thanks I will check out these sites

Here is the shell script I am trying to run in bash

if [ $# -neq 1 ];
then
echo "Usage: <program name> <string expression>"
exit 1
fi

findstr=$1
echo "$findstr"

find . -name 'm1_jrAPS*_output.log' -exec grep \'"$findstr"\' {} \; -print


In the above script I want to take the string from the command line and put it in the find command in the shell script I have a hard time getting the shell to expand it in single quotes like in the regular command

I found an easier solution using command substitution and looping.

Hi,
Im having a similar problem here.
Im trying to make a script:

#/bin/bash
teste="{33,351}";
ls -laht /tmp/interface*_${teste}_*.xml

but it gives an error. If i change ${teste} for the static value itself it works.

Any idea? I've tried to evaluate with the $() but it doesnt work.

Thanks

find . -name \'*jrAPS*_output.log\'|xargs egrep "a regular expresion"

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.