[Condition] if then else


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [Condition] if then else
# 8  
Old 02-23-2013
That behaviour is quite easy to understand: find doesn't locate any file and thus its output is empty; the while read gets an immediate EOF condition and the loop is not entered.
# 9  
Old 02-24-2013
Quote:
Originally Posted by RudiC
That behaviour is quite easy to understand: find doesn't locate any file and thus its output is empty; the while read gets an immediate EOF condition and the loop is not entered.
Thanks, my idea consists to test return code without using while but it seems that the command find doesn't like return code.

Another thing, my script returns this error
Code:
./search3: line 7: syntax error near unexpected token `else'
./search3: line 7: `else'

I'm ashamed, I don't know Why ?


Code:
nom=$1
for FILE in $(find ./temp/ -name "$nom"); do
if [ echo "$?" eq 0 ] then
echo $? #mode debug
name_log=$(basename "${FILE}")
echo -e "The file "$name_log" exist"
else
echo -e "There is no file "$nom""
fi
done

# 10  
Old 02-24-2013
There should be a ; between ] and then or put then on a new line.
The should be a - in front eq

This code will break if there are too many files or if the file names contain spaces or certain special characters. It is better to use:
Code:
find ./temp/ -name "$nom" |
while read FILE
do 
  ...

# 11  
Old 02-24-2013
Checking the exit status does not make sense there. Also, the way you are doing that is totally wrong.
Code:
if [ echo "$?" eq 0 ] then

should be (again, why???)
Code:
if [ $? -eq 0 ]; then

# 12  
Old 02-24-2013
Thanks for your help Scrutinizer and elixir_sinari
I follow yours instructions

Code:
nom=$1
find ./temp/ -name "$nom"|
while read FILE
do
if [ $? -eq 0 ]; then
echo $? #mode debug
name_log=$(basename "${FILE}")
echo -e "The file "$name_log" exist"
else
echo -e "There is no file "$nom""
fi
done

Here the results
Code:
 ./my_script test
0
The file test exist

But when the file doesn't exist
Code:
 ./my_script tes

no response

How do i make for testing a missing file ?
Can you show me a bit of script for that ?

Thanks in advance
# 13  
Old 02-24-2013
It's a bit tricky to get values back to your main script from subshells, and pipes are running in subshells. You can try this one that will save a good result in a variable for use outside the loop and output what you request, but you can't use the result, without further processing, in the main:
Code:
$ find ./temp -iname "$nom" | { while read FILE; do echo $FILE exists; FOUND=1; done; [ "$FOUND" != "1" ]  && echo No file $nom found; }

This User Gave Thanks to RudiC For This Post:
# 14  
Old 02-24-2013
Another approach:
Code:
if find . -name "$nom" > /dev/null 2> /dev/null
then
        printf "File: ${nom} exists\n"
else
        printf "File: ${nom} does not exist\n"
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with if condition

o/p of my command is given below My requirement is if Pnumber is 0 then stabilization.Build.2013 else stabilization.PBuild.2013.3 (11 Replies)
Discussion started by: nikhil jain
11 Replies

2. UNIX for Dummies Questions & Answers

IF [ condition ] help

Hi all Unix newbie - please be gentle Am modifying an existing script to error trap a variable with a length of 0 #!/bin/bash ipfile='/var/data/bin/ipaddress' ] && ipold="$(< "$ipfile" )" ipnew="$( wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //;s/<.*$//' )" #... (6 Replies)
Discussion started by: CRChamberlain
6 Replies

3. Shell Programming and Scripting

If condition return 0 even when it fails to satisfy te condition

HI My doubt may be basic one but I need to get it clarified.. When i use "if" condition that checks for many AND, OR logical conditions like if ]; then return 0 fi Even the if condition fails it returns as zero.. Any clue.. But if i add else condition like if ]; ... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

4. Shell Programming and Scripting

if condition

if chr1:109457160 1 109457160 99.1735537190083 + chr1:109457233 1 109457233 99.1735537190083 - chr1:109457614 1 109457614 99.1735537190083 + chr1:109457618 1 109457618 100 + chr1:109457943 1 109457943 100 - chr1:109458224 1 109458224 99.1735537190083 - file1.txt If 6th column in... (3 Replies)
Discussion started by: johnkim0806
3 Replies

5. Shell Programming and Scripting

redirect stdout echo command in condition A run in condition B

hi, I have some problems in my simple script about the redirect echo stdout command inside a condition. Why is the echo command inside the elif still execute in the else command Here are my simple script After check on the two diff output the echo stdout redirect is present in two diff... (3 Replies)
Discussion started by: jao_madn
3 Replies

6. HP-UX

Difference between [condition] and [[condition]] and ((condition)) when used with if condition

Executed the following if conditions .. and got different results . only (( )) gave correct o/p with all scenarios . Can anybody please let me know what is the difference between and ] and ((condition)) when used with if condition. And why each condition gave different result. 1.... (2 Replies)
Discussion started by: soumyabubun
2 Replies

7. Shell Programming and Scripting

If Condition

Hi, I am trying to execute this command, but is it not working, says "`;' unexpected" eval $lgrep $SAM_CMD ; if ; then ; echo "No Error" ; fi What i want is, return the command output, if it is non zero, say "No Error". Thanks, John. (21 Replies)
Discussion started by: john_prince
21 Replies

8. Shell Programming and Scripting

if..else condition

i have a paramter data_date in which i am passing a string value.i want to find out another paramter file_date from this.the logic is given below if day of data_date = sunday or monday then file_date=data_date-1 else file_date=data_date-2 i am passing data_date as 20061027. how can i... (3 Replies)
Discussion started by: dr46014
3 Replies

9. Shell Programming and Scripting

if condition

Hi friends, :) In a shell script i found the following if condition. echo -n "Which version of $1 do you want to restore ('0' to quit)? : " read desired if ${desired:=1} -ge $index ] ; then echo "$0: Restore canceled by user: index value too big." >&2 exit 1 fi Can... (1 Reply)
Discussion started by: ravi raj kumar
1 Replies

10. Shell Programming and Scripting

if condition ...

i have following if condition if above statement is case sensitive.....what is syntax if i have to make above comparision case insensetive (4 Replies)
Discussion started by: mahabunta
4 Replies
Login or Register to Ask a Question