Visit Our UNIX and Linux User Community


problem with if/while statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting problem with if/while statement
# 1  
Old 03-25-2009
problem with if/while statement

I'm trying to have the script check if a file has data or not, and then process it accordingly. If the file is empty, I want it to return "nothing to do", if not, I want it to process the file line by line. This is what I have so far, but it always returns "nothing to do", even if the file is not empty. Any ideas?

Code:
 
system "rm file2";
open(FILE2, ">file2");
 
open(MYINPUTFILE, "file");          
 
if ( ! -s file ){
 print file2 "Nothing to do\n";
 } else {
 while(<MYINPUTFILE>) {
  my($line) = $_;
  chomp($line);
  print file2 "$line\n";
  print file2 "you need to do this\n";
  print file2 " \n";
 }
}

# 2  
Old 03-25-2009
Would it not just be

if ( -s file ){

as the -s means if the file is not empty.. would using the ! not cancel that out?
# 3  
Old 03-25-2009
this is what man page says.....
-s FileName
Returns a True exit value if the specified FileName exists and has a size greater than 0.
# 4  
Old 03-25-2009
Quote:
Originally Posted by Jazmania
Would it not just be

if ( -s file ){

as the -s means if the file is not empty.. would using the ! not cancel that out?

You are correct, however, I already attempted that and swapped my "if" and "else" conditions, but I always got an error about the "else" line having a syntax error, see code and errors below.

if ( -s file ) {
while(<MYINPUTFILE>) {
my($line) = $_;
chomp($line);
print FILE2 "$line\n";
print FILE2 "You need to do this\n";
print FILE2 " \n";
}
else
{
print FILE2 "Nothing to be done\n";
}
}





syntax error at ansipre3 line 51, near "else"
syntax error at ansipre3 line 55, near "}"

Last edited by ddrew78; 03-25-2009 at 03:03 PM..
# 5  
Old 03-25-2009
how about
using :
Quote:
print "Nothing to do\n";
instead of :
Quote:
print file2 "Nothing to do\n";
don't know much about perl , it worked for me.Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #662
Difficulty: Easy
The drives in DOS are referred to by identifying integers.
True or False?

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

Problem if statement

echo "Enter the variable: " " read var1 echo " " for i in ib eb atm do if ; 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.. (7 Replies)
Discussion started by: bhas85
7 Replies

3. 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

4. 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

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