while loop inside a for loop


 
Thread Tools Search this Thread
# 1  
Question while loop inside a for loop

Hi, I am a newbie and would like to create a shell script that will move one file at a time from one path to another path in the same server. However, the next file should wait until the first file gets deleted by an application.

I tried creating the script but right after the first file has been moved the script ends. It did not move the 2nd file.

Here is the script :

Code:
#!/bin/ksh
echo "// *  CHECKING if with file from HOCDT01            "
cd $sourceftpdir
for loopfile in `ls ASGTEST* Wings_Test*`
do
 mv -f $loopfile $targetdir/.
       if [ $? -eq 0 ]
           then
             echo "// * "
             echo "// *     $loopfile MOVED to $targetdir  " `date`
           else
             ret=99
             echo "// *      $loopfile Files not moved " `date`
             exit $ret
       fi
######################################################################
# Check file                                                         #
######################################################################
echo "This is the filename $loopfile"
loop_counter=1
while  [  "$loop_counter" -lt 6 ]
do
   cd $targetdir
   ls $loopfile 
   ret=$?
  if [ $ret -eq 0 ]
  then
    echo " NOT READY FOR NEXT STEP - Loop Counter : $loop_counter"
    if [  "$loop_counter" -eq 5 ]
    then
     ret=20
     echo " Mode Checking exceeded 30 minutes"
     exit $ret
    else
     sleep 300
    fi
  else
         echo "//***************************************"
         echo "//* File taken by application"
         loop_counter=6
  fi
  loop_counter=`expr $loop_counter + 1`
done
done


Help needed. Thanks in advance.

Last edited by Corona688; 10-10-2012 at 02:15 PM..
# 2  
That is a useless use of ls and useless use of backticks.

You don't have to use ls to check for the existence of a file, that's what if [ -f "$FILENAME" ] is for. -d checks for a directory.

Code:
# Bad things will happen if these dirs don't exist.
# Test first!
[ -d "$sourceftpdir" ] || exit 1
[ -d "$targetdir" ] || exit 1

ls "$sourceftpdir" | egrep "^(ASGTEST|Wings_Test)" | while read FILE
do
        [ -f "$sourceftpdir/$FILE" ] || continue # Ignore things that aren't files
        if ! mv "$sourceftpdir/$FILE" "$targetdir"
        then
                echo "couldn't move $FILE"
                exit 1
        fi

        S=0
        while [ -f "$targetdir/$FILE" ] && [ "$S" -lt 1800 ]
        do
                sleep 10
                let S=S+10
        done

        if [ -f "$targetdir/$FILE" ]
        then
                echo "File $FILE still exists after 30 minutes"
                exit 1
        fi

        echo "File moved from $inputdir to $targetdir and processed"
done

 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Science: Gadgets
Difficulty: Easy
Microphones can be used not only to pick up sound, but also to project sound similar to a speaker.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Write a while loop inside for loop?

I'm taking a unix class and need to countdown to 0 from whatever number the user inputs. I know how to do this with a while or until loop but using the for loop is throwing me off.... I know I can use an if-then statement in my for loop but can I include a while loop in my for loop? (3 Replies)
Discussion started by: xxhieixx
3 Replies

2. Shell Programming and Scripting

If inside If loop

Hi All, Below is the very simple code snippet but it si giving me syntax error #!/bin/bash #To ensure If JMS directory exists or not ServerName=$(hostname) #To ensure If JMS directory exists or not echo $ServerName if ; then echo "Inside First If" if ; then echo 'JMS... (4 Replies)
Discussion started by: sharsour
4 Replies

3. Shell Programming and Scripting

For Loop inside For loop

I am new to unix and trying to make a script for writing all my command into another file and use that file to run all commands I am trying to use for loop with echo command to generate a command based script for writing the file with all the command sequentially w.r.t for loop. I want... (6 Replies)
Discussion started by: nnani
6 Replies

4. Shell Programming and Scripting

BASH loop inside a loop question

Hi all Sorry for the basic question, but i am writing a shell script to get around a slightly flaky binary that ships with one of our servers. This particular utility randomly generates the correct information and could work first time or may work on the 12th or 100th attempt etc !.... (4 Replies)
Discussion started by: rethink
4 Replies

5. Shell Programming and Scripting

Using 'su' inside a loop

Hi, I am using su within a for loop. As you might expect, it prompts for password during each loop execution. Here is my piece of code: for i in $LIST do if then DATABASE=`echo $i | awk -F "|" '{ print $1 }'` USER_ID=`echo $i | awk -F "|" '{ print $2 }'` su - apstage -c... (1 Reply)
Discussion started by: sugan
1 Replies

6. Shell Programming and Scripting

Is it possible to have a for loop inside another for loop?

Is it possible to have a for loop nested inside another for loop? I am trying to run a script against specific files inside a child directory but I can't seem to find a solution that is clean and affect to do it. Here is what I am trying do. I have 2 gzip files in each of the Target Directories... (4 Replies)
Discussion started by: scottzx7rr
4 Replies

7. Shell Programming and Scripting

ssh inside a for loop

Hi, The requirement is to ssh to unix servers and oracle databases, to perform some monitoring activity. I'm using shell script to perfom this. I pass the server details and database to a variable ... SERVERS="SERVER1 SERVER2 SERVER3" DATABASE="DB1 DB2 DB3" for i in $SERVERS do ssh... (2 Replies)
Discussion started by: senthil3d
2 Replies

8. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

9. Shell Programming and Scripting

while loop inside while loop

Dear All, i have a awk script where i'm using while loop inside while loop here is the code: awk -v DATE="$CURRDATE" -v -F'@' 'BEGIN { while(( getline < "Merge_Calldet.txt" )) { ARR=$5 LINE=$0 while(( getline < "Merge_Accessnum.txt" )) { TESTSIMENTRY=$1 FILEDATE=$15 ... (0 Replies)
Discussion started by: panknil
0 Replies

10. UNIX for Dummies Questions & Answers

read inside a while loop

Hi all, In a while loop, like below... while read line do read choice case $choice in 1) echo "xxx" esac done < file why I can't run the read choice???? (3 Replies)
Discussion started by: dta4316
3 Replies

Featured Tech Videos