If else - grep a string in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If else - grep a string in a file
# 1  
Old 04-28-2010
If else - grep a string in a file

Hi all,

I would want to recieve notification only if there are sessions block in our databases.

This is my script, but it's not working. No matter what is the contents in the $OUTFILE, I get emails.

Code:
/usr/bin/cat $OUTFILE | read selected

if [ "$selected" = "no rows selected" ]
then
  echo "No session is blocked"
else
  cat $OUTFILE | mailx -s "[TESTING]Blocking sessions in $ORACLE_SID" $DBA
fi
exit


Any suggestions? Thanks!

Last edited by Franklin52; 04-28-2010 at 02:57 AM.. Reason: Please use code tags!
# 2  
Old 04-28-2010
The way which you read the file content into variable is the issue.

You can do it as,

Code:
selected=`cat $OUTFILE`

Try debugging, like echo the variable after reading.
# 3  
Old 04-28-2010
Code:
if grep "no rows selected" $OUTFILE
then
   cat $OUTFILE | mailx -s "[TESTING]Blocking sessions in $ORACLE_SID" $DBA
else
   echo "No session is blocked"
fi

# 4  
Old 04-28-2010
Quote:
Originally Posted by rdcwayx
Code:
if grep "no rows selected" $OUTFILE
then
   cat $OUTFILE | mailx -s "[TESTING]Blocking sessions in $ORACLE_SID" $DBA
else
   echo "No session is blocked"
fi

I've never seen an if formatted quite like that. I tried it out, and I'm not sure I understand why you would want to do that. Wouldn't the grep display to the screen when you ran the script? And wouldn't that be a pain?

Code:
(02:23:01\[D@DeCoBox15)
[~]$ cat animals
cat
dog
hippo

(02:23:07\[D@DeCoBox15)
[~]$ cat p
#!/bin/bash

file=animals
if grep "$1" $file
then
echo "there is a $1"
else
echo "there is no $1"
fi


(02:23:10\[D@DeCoBox15)
[~]$ ./p dog
dog
there is a dog

(02:23:18\[D@DeCoBox15)
[~]$ ./p snake
there is no snake

Wouldn't it be better to just check that the grep returns something?

Code:
(02:26:07\[D@DeCoBox15)
[~]$ cat o
#!/bin/bash

file=animals
if [[ -n $(grep "$1" $file) ]];then
echo "there is a $1"
else
echo "there is no $1"
fi


(02:26:10\[D@DeCoBox15)
[~]$ ./o cat
there is a cat

(02:26:14\[D@DeCoBox15)
[~]$ ./o snake
there is no snake

# 5  
Old 05-10-2010
I understand your meaning, it is good to use
Code:
[[ -n $(grep "$1" $file) ]]

but I can also avoid to display the grep output by below code.

Code:
#!/bin/bash

file=animals
if grep "$1" $file  > /dev/null 2>&1
then
  echo "there is a $1"
else
  echo "there is no $1"
fi

# 6  
Old 05-10-2010
If syntax is
Code:
if commandline_exit_code_is_0
then
    do_some
fi

After if is any command line and after executing, shell test the exit code of the command line.

Those people who has used programming language, forget your if and learn shell if, it's little different. [, [[, grep, ((, rm, cp, ... all those are commands even some of those look more ...
# 7  
Old 05-11-2010
Quote:
Originally Posted by rdcwayx
I understand your meaning, it is good to use
Code:
[[ -n $(grep "$1" $file) ]]

but I can also avoid to display the grep output by below code.

Code:
#!/bin/bash

file=animals
if grep "$1" $file  > /dev/null 2>&1
then
  echo "there is a $1"
else
  echo "there is no $1"
fi

Well yeah, but if you were going to do that, you might as well say:

Code:
#!/bin/bash

file=animals
if grep -q "$1" $file  
then
  echo "there is a $1"
else
  echo "there is no $1"
fi

Of course now we're being pedantic...I just wanted to show off my recently discovered "quiet" switch for grep. But as kshji said, I hadn't considered that [[ is a command in of itself, and really you can get way with just if. That was the part I wasn't considering.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace string of a file with a string of another file for matches using grep,sed,awk

I have a file comp.pkglist which mention package version and release . In 'version change' and 'release change' line there are two versions 'old' and 'new' Version Change: --> Release Change: --> cat comp.pkglist Package list: nss-util-devel-3.28.4-1.el6_9.x86_64 Version Change: 3.28.4 -->... (1 Reply)
Discussion started by: Paras Pandey
1 Replies

2. Shell Programming and Scripting

Grep string in files and list file names that contain the string

Hi, I have a list of zipped files. I want to grep for a string in all files and get a list of file names that contain the string. But without unzipping them before that, more like using something like gzcat. My OS is: SunOS test 5.10 Generic_142900-13 sun4u sparc SUNW,SPARC-Enterprise (8 Replies)
Discussion started by: apenkov
8 Replies

3. Shell Programming and Scripting

grep exact string from files and write to filename when string present in file

I am attempting to grep an exact string from a series of files within a directory and append that output to the filename when it is present in the file. I've been after this all day with no luck. Thanks for your help in advance :wall:. (4 Replies)
Discussion started by: JC_1
4 Replies

4. Shell Programming and Scripting

grep a string in a file

Hi , i'm trying to create a code for the belwo scenario. i have a data in a file file.txt like below. ram dept comp shyam field comp Now i need write a code to find the string which is always 2 lines before the string "comp" Can you please help me in this. Thanks in advance (15 Replies)
Discussion started by: p.bhaskar
15 Replies

5. Shell Programming and Scripting

Grep a string from input file and delete next three lines including the line contains string in xml

Hi, 1_strings file contains $ cat 1_strings /home/$USER/Src /home/Valid /home/Review$ cat myxml <projected value="some string" path="/home/$USER/Src"> <input 1/> <estimate value/> <somestring/> </projected> <few more lines > <projected value="some string" path="/home/$USER/check">... (4 Replies)
Discussion started by: greet_sed
4 Replies

6. UNIX for Dummies Questions & Answers

How to grep string from nohup.out file

Hi, I have one shell script, which run another one script inside in nohup mode. I want to search one string from the nohyup.out file in the same mail shell script itself .Can anyone help me?? Please find the code below: total_ear=`cd ear ; ls *.ear | wc -l | tr -d ' '` for ear in `cd ear ; ls... (0 Replies)
Discussion started by: ckchelladurai
0 Replies

7. Shell Programming and Scripting

grep string from a file

hi everyone, 1.txt 12 34 56 2.txt 456----aa abc;b;b;b 34;a;a;a;a output is 456----aa 34;a;a;a;a (11 Replies)
Discussion started by: jimmy_y
11 Replies

8. Shell Programming and Scripting

How to grep a string in todays file

Hello guys - I am new to Unix. I am trying to understand how to grep a perticular string in todays file? I am trying this syntax but not getting what I am looking for: % grep `date '+%d/%b/%Y'` For instance there are 2 files generated today with same data. I am trying to find them and... (21 Replies)
Discussion started by: DallasT
21 Replies

9. UNIX for Dummies Questions & Answers

Grep and count the string in a file.

Hi, I have to grep a word 'XYZ' from 900 files ( from 2007 till date), take its count month wise. The output should display month, count , word 'XYZ' . I tried searching the forum for solution but could find any. I would apprieciate if any one can help me asap .... Many Thanks:) (12 Replies)
Discussion started by: vikram2008
12 Replies

10. Shell Programming and Scripting

how to grep for string in log file

Hi Im running a backup scriptwhich creates a log file how do grep for the string in the logfile so the backup script can continue to next stage otherwise it will exit i.e 12:32:53 INF - Client completed sending data for backup 12:33:02 INF - Backup by root on client lonbob04bak using... (4 Replies)
Discussion started by: eb222
4 Replies
Login or Register to Ask a Question