Visit Our UNIX and Linux User Community


Problem if statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem if statement
# 1  
Old 07-14-2014
Problem if statement

Code:
echo "Enter the variable: " "
read var1
echo " "
for i in ib eb atm
do
if [ $var1 = $i ]; then
mv properties environment.properties
break
else
 echo "No changes to $var1 "
fi
done

When i run and enter the eb it's not working.Any suggestions please..
# 2  
Old 07-14-2014
What do you mean by "it's not working"? Do you mean you're getting a syntax error for mismatched quotes on the first line of your script?

What are you expecting to happen?

What is happening?

What OS are you using?

What shell are you using?
# 3  
Old 07-14-2014
1)I am using AIX operating system.
2) I am using bash shell
3)Entered value is ib or eb or atm then it should mv properties environment.properties else it should not exit from the script. It should move next step in the script.

I didn't see any error messages but my logic is not working. When I compare if [ $var1 = $i ]

Var1= eb it should mv the file but it is going else place.

Enter the variable:
eb

o/p:
No changes to eb
# 4  
Old 07-14-2014
Code:
echo "Enter the variable: "
read var1
echo " "
for i in ib eb atm
do
if [[ $var1 == $i ]]; then
mv properties environment.properties
break
else
 echo "No changes to $var1 "
fi
done

# 5  
Old 07-14-2014
If you enter eb
then it prints 'No changes' for i = ib, but then runs the mv for i = eb
# 6  
Old 07-14-2014
Quote:
Originally Posted by bhas85
Code:
if [ $var1 = $i ]; then

There are several problems with this:

first, tests string comparison operator is not "=" but "==", as SriniShoo has already stated;

second, you should quote your variables: if "$var" contains whitespace, your command is going to fail with a syntax error otherwise:
Code:
if [ "$var1" == "$i" ]; then

In addition your logic is flawed: the for-loop will try one possible value after the next and for every failed attempt print "no changes". Hence, if you enter "atm" the output will read something like:

Code:
No changes to atm
No changes to atm

and your file will get moved - or not, depending on it being there in first place, otherwise you will get an error.

You might want to make the output of your script somewhat better understandable.

I hope this helps.

bakunin

Last edited by bakunin; 07-14-2014 at 08:51 AM..
# 7  
Old 07-14-2014
A better way of doing this would be:
Code:
case $var1 in 
  (ib|eb|atm) echo match ;;
  (*) echo no match ;;
esac

Quote:
Originally Posted by bakunin
[..]
first, tests string comparison operator is not "=" but "==", as SriniShoo has already stated;
Actually, it is a single = . See test: operands
This User Gave Thanks to Scrutinizer For This Post:

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with If statement

Hi All, I am writing an if statement to check multiple conditions, but when I try to execute the script it is breaking at the point of if statement by showing the issue below. Code I am using is given below. if -a ] then .... else ... fi I am not understanding... (3 Replies)
Discussion started by: ginrkf
3 Replies

2. Shell Programming and Scripting

while statement problem

Hi, Here is a big head scratcher for me.... I'm creating a loop with while reading lines from a file called example.txt: #!/bin/sh while read line do some command > another file ----- output to another file done < example.txt I would like that another file to be unique for every... (5 Replies)
Discussion started by: svetoslav_sj
5 Replies

3. Shell Programming and Scripting

if statement problem

Writing my script and I'm banging my head on the desk right now ... My biggest problem is the 3rd IF statement where I check if the username exists. Doing the grep command on it's own in the shell gives me a 1 or 0 value. Running the script, it always returns a false value (runs the ELSE... (4 Replies)
Discussion started by: ADay2Long
4 Replies

4. UNIX for Dummies Questions & Answers

Having problem with if statement

Could someone help me out with this if statement? It's supposed to get a person's website, but it isn't working when I run it. website="" echo "Would you like to enter a website? Enter Yes/No" read choice if then while do echo "Please enter a website:"; read... (4 Replies)
Discussion started by: Sotau
4 Replies

5. Shell Programming and Scripting

if statement problem

Hi I have a bash script like this if then echo "A" else echo "B" fi $1 is something like 02350 (there is always a trailing '0') and I would like to have an if based on the value of the digits after the 0. Can anybody help? Thanks, Sarah (3 Replies)
Discussion started by: f_o_555
3 Replies

6. UNIX for Dummies Questions & Answers

if statement problem

See https://www.unix.com/shell-programming-scripting/96846-if-statement-problem.html (0 Replies)
Discussion started by: f_o_555
0 Replies

7. Shell Programming and Scripting

If Statement Problem..

The problem I am having here is that only the 1st option is executed, no matter if I pick yes or no. What am I doing wrong? How can I get this working right without resorting to a case statement? echo "This is the max size your lvol can be:" echo $MAXSIZE echo echo Do you want to max out... (2 Replies)
Discussion started by: LinuxRacr
2 Replies

8. UNIX for Dummies Questions & Answers

if statement problem

hi all. i just have a very small problem. i have a menu of 7 choices. i want an if statement so that if the user chooses anything except inside the 1 to 7 range, i can handle the error for it. i tried this: if ] then ....... fi (but it dont work) ...any suggestions? ... (4 Replies)
Discussion started by: djt0506
4 Replies

9. Shell Programming and Scripting

problem with an IF statement

I need an IF statement that will compare the contents of the variable CX with the actual string "CP". ie. If the contents of $CX are NOT equal to the actual string "CP" then blah blah blah. I have tried a number of things including the following....... if ]; then if ]; then if ];... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

10. UNIX for Dummies Questions & Answers

if statement problem

I keep getting an error at line 21, it doesn't like my if statement. Previously I have tried using (( )), but still get errors. The current error is that server_busy is not found. This is the script: #! /bin/ksh server_busy="na" for file in $1 $2 $3 $4 $5 $6 do echo " ${file}\t\c" ... (1 Reply)
Discussion started by: coughlin74
1 Replies

Featured Tech Videos