We're a community of 1077K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,076,063 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

Using find in a bash shell script

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?

5
Contributors
9
Replies
7 Years
Discussion Span
1 Year Ago
Last Updated
11
Views
Question
Answered
iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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.

coca-light
Newbie Poster
2 posts since Dec 2004
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

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

iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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

coca-light
Newbie Poster
2 posts since Dec 2004
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0
Dani
The Queen of DaniWeb
Administrator
21,343 posts since Feb 2002
Reputation Points: 1,555
Solved Threads: 367
Skill Endorsements: 122

Thanks I will check out these sites

iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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

iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0
Question Answered as of 8 Years Ago by coca-light and Dani

I found an easier solution using command substitution and looping.

iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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

edup_pt
Newbie Poster
16 posts since Jul 2010
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

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

borlam
Newbie Poster
1 post since Feb 2012
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

This question has already been solved: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
 
© 2013 DaniWeb® LLC
Page rendered in 0.3169 seconds using 2.67MB