[Condition] if then else


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [Condition] if then else
# 1  
Old 02-21-2013
[Condition] if then else

Hi,
I want to test some commands in a script but it doesn't work..
Can you help me ?

Code:
my_script file1

Code:
nom=$1
for FILE in $(find temp/ -name "$nom"); do echo $nom; done 2> /dev/null
name_log=$(basename "${FILE}")
if [ -f "$name_log" ]; then echo $nom
else
echo -e "There is no file "$nom""
                read -p ""
                echo $REPLY
fi

Thank you
# 2  
Old 02-21-2013
The for is a bit funny as it does the exact same thing for each file. "find ... |while read FILE" is more robust and parallel.

name_log only has access to the last file if any. You are tesitng that a file of the same entry name is in $PWD. It seems like more needs to be inside the loop: do ... done.
# 3  
Old 02-21-2013
Try it like this:
Code:
nom=$1
echo "Your looking for file($nom) in directory and subdirectories(/temp)..."
for FILE in `find /temp -name $nom 2>/dev/null`
do
  echo "File found: $FILE"
done
if [ -z $FILE ]; then
  echo "File($nom) not found in directory and subdirectories(/temp)..."
fi

# 4  
Old 02-21-2013
Best pre-clean FILE:
Code:
$ (FILE=x
for FILE in $(sleep 2)
 do
  echo hi
 done
echo $FILE
)
x
$

# 5  
Old 02-21-2013
Thanks

Quote:
Originally Posted by spacebar
Try it like this:
Code:
nom=$1
echo "Your looking for file($nom) in directory and subdirectories(/temp)..."
for FILE in `find /temp -name $nom 2>/dev/null`
do
  echo "File found: $FILE"
done
if [ -z $FILE ]; then
  echo "File($nom) not found in directory and subdirectories(/temp)..."
fi


Code:
./spacebar test
Your looking for file(test) in directory and subdirectories(/Scripts)...
File found: Scripts/test

it's OK

Code:
./spacebar tes
Your looking for file(tes) in directory and subdirectories(/Scripts)...

it doesn't work

---------- Post updated at 05:11 PM ---------- Previous update was at 05:04 PM ----------

Quote:
Originally Posted by DGPickett
The for is a bit funny as it does the exact same thing for each file. "find ... |while read FILE" is more robust and parallel.

name_log only has access to the last file if any. You are tesitng that a file of the same entry name is in $PWD. It seems like more needs to be inside the loop: do ... done.
My english spoken is average.
My level in script is low.
I'm not sure to have understand, can you tell me more because it doesn't work and i would like keeping this script with this form as you advise.

Code:
nom=$1
find -name "$nom" |while read FILE in $(/temp);
name_log=$(basename "${FILE}")
do
echo "$nom"
done
if [ -f "$name_log" ]; then
echo -e "There is no file "$nom""
                read -p ""
                #echo $REPLY
fi

# 6  
Old 02-22-2013
  1. Do not use potentially dirty variables,
  2. 'find' is where the starting directory must go,
  3. 'do' goes right after "while read vars ;" and
  4. just test for blank in a simple, intuitive way.
Code:
FILE=                                                               # or 'unset FILE'
 
find /temp -name "$nom" |while read FILE ; do ... done 
 
if [ "$FILE" = "" ] ....

# 7  
Old 02-23-2013
Quote:
Originally Posted by DGPickett
  1. Do not use potentially dirty variables,
  2. 'find' is where the starting directory must go,
  3. 'do' goes right after "while read vars ;" and
  4. just test for blank in a simple, intuitive way.
Code:
FILE=                                                               # or 'unset FILE'
 
find /temp -name "$nom" |while read FILE ; do ... done 
 
if [ "$FILE" = "" ] ....


Hello,
Thank you for your advices.

The file "test" exist
Code:
 ./search test

The result is
Code:
test

that's OK

The file "tes" doesn't exist
Code:
 ./search test

blank result
The right result would be "There is no file tes"

What's wrong ? All suggestions are welcome.
Thanks

my_script
Code:
nom=$1
FILE=""
find ./temp -type f -name "$nom" |while read FILE ;do
name_log=$(basename "${FILE}")
if [ ! -f "$DIRECTORY/$name_log" ]; then echo $name_log
else
echo -e "There is no file "$name_log""
fi
done

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