954,173 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

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 '' {}\; -print

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

the result was find: incomplete statement why?

iparkin
Newbie Poster
11 posts since Dec 2004
Reputation Points: 10
Solved Threads: 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
 

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
 

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
 
cscgal
The Queen of DaniWeb
Administrator
19,421 posts since Feb 2002
Reputation Points: 1,474
Solved Threads: 229
 

Thanks I will check out these sites

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

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

if [ $# -neq 1 ];
then
echo "Usage: "
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
 

I found an easier solution using command substitution and looping.

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

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

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

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
 

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

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

This question has already been solved

Post: Markdown Syntax: Formatting Help
You