Visit Our UNIX and Linux User Community


If then else - Retry operation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If then else - Retry operation
# 1  
Old 08-20-2013
If then else - Retry operation

I need to read a file line by line, then depending on the contents of each line, type in a code that will get written to an array.

The problem I have is when I ask the user to confirm the input code, if it is wrong, how do i Return to ask again?
Any thing I try increments the file to the next line where I need to retry the previous incorrectline.?

I cannot find any examples where aquestion asked but the fail mode os to go back and retry to original option. They all show do one thing or another, but not do one thing or retry.

Thanks
Ken

the contents of FILE.EXT
Code:
"D001","50M Run","50M"
"D003","100M Run","100M"
"D004","200M Run","200M"

My script to do the work
Code:
#!/bin/bash
# Put Values in an myarrayname and read them back
file="FILE.EXT"     # input filename

while read line ;do
      wardevent=${line:3:2}                        # find the wardells Event code 
      eventnam=$(echo $line | cut -d '"' -f4)        # Extract the event

read -p "Enter the code for the Center event $eventnam  - " mmevent </dev/tty

read -p "Is this Event Code correct? y/n " yes </dev/tty
    if [ "$yes" == "y" ]
        then myarrayname["$wardevent"]="$mmevent"    # Write new line to Array and Continue to next entry
        else exit                                    #Ask again to redo line
    fi 
done <"$file"

# 2  
Old 08-20-2013
You may need to loop it up until you get response as "y" like the following.

Code:
#!/bin/bash
# Put Values in an myarrayname and read them back
file="FILE.EXT"     # input filename

yes="n"
while read line ;do
      wardevent=${line:3:2}                        # find the wardells Event code 
      eventnam=$(echo $line | cut -d '"' -f4)        # Extract the event

#read -p "Enter the code for the Center event $eventnam  - " mmevent </dev/tty

#read -p "Is this Event Code correct? y/n " yes </dev/tty
#    if [ "$yes" == "y" ]
#        then myarrayname["$wardevent"]="$mmevent"    # Write new line to Array and Continue to next entry
#        else exit                                    #Ask again to redo line
#    fi 
     until [ "$yes" == "y" ]
     do
       read -p "Enter the code for the Center event $eventnam  - " mmevent </dev/tty
       read -p "Is this Event Code correct? y/n " yes </dev/tty

     done
    myarrayname["$wardevent"]="$mmevent"
    yes="n" 
done <"$file"

Added lines in blue and commented unwanted lines.
This User Gave Thanks to krishmaths For This Post:
# 3  
Old 08-20-2013
Code:
#!/bin/bash
# Put Values in an myarrayname and read them back
file="file.txt"     # input filename

while read line ;do
      wardevent=${line:3:2}                        # find the wardells Event code
      eventnam=$(echo $line | cut -d '"' -f4)        # Extract the event
      t=1
      while [ $t == "1" ]
      do
            read -p "Enter the code for the Center event $eventnam  - " mmevent </dev/tty
            read -p "Is this Event Code correct? y/n " yes </dev/tty
            if [ "$yes" == "y" ]; then
                myarrayname["$wardevent"]="$mmevent"    # Write new line to Array and Continue to next entry
                t=0
            fi
      done
done <"$file"

This User Gave Thanks to rdcwayx For This Post:
# 4  
Old 08-20-2013
thank you bot and they do work, Except they run another iteration after the final line in the file.

thus they ask the user for input on a blank lime and write a Blank entry in the array

Any easy way out of that except Querying in line = blank first?

Ken
# 5  
Old 08-20-2013
@krishmaths:
test wants = not ==
And the variable preset can happen once when placed just before the loop
Code:
yes="n"
until [ "$yes" = "y" ]

These 2 Users Gave Thanks to MadeInGermany For This Post:
# 6  
Old 08-20-2013
Quote:
Originally Posted by kcpoole
thank you bot and they do work, Except they run another iteration after the final line in the file.

thus they ask the user for input on a blank lime and write a Blank entry in the array

Any easy way out of that except Querying in line = blank first?

Ken
Code:
grep -v ^$ $file |while read line ;do
# something here.
done

# 7  
Old 08-20-2013
Solved

Quote:
Originally Posted by rdcwayx
Code:
grep -v ^$ $file |while read line ;do
# something here.
done

thanks I just figured it out.

My original input file had an extra blank line in it that was causing the issue

Thanks For you help

Ken

Previous Thread | Next Thread
Test Your Knowledge in Computers #748
Difficulty: Medium
The ZX81 was a home computer that was produced by Sinclair Research and manufactured in Dundee, Scotland.
True or False?

10 More Discussions You Might Find Interesting

1. Solaris

Unrecovered read error No retry

We encountered these error 2 times(e.g. Solaris 10 with NetWorker installed) with in the month of August, but we couldn't pin point the root cause, it might be bad sector, bad cable or software incompatibility? Do you experience these issue or please share your understanding about this? Thanks... (0 Replies)
Discussion started by: B@S
0 Replies

2. UNIX for Dummies Questions & Answers

Wget retry on 500 internal error

Hello Guys, I am trying to generate static site, I have perl script that wget the url, so the problem is sometimes wget has 500 internal error, this is failing to get that page. So I am thinking of retrying that url with 500 response. system $command = 'wget ... -i inputfile -o outfile" Is... (2 Replies)
Discussion started by: neal
2 Replies

3. UNIX for Advanced & Expert Users

How to manipulate the conditions between every retry in wget?

Hi , When i hit the URL using WGET command ,it is retrying according to the number of retry we mentioned along with Wget command. my expectation : 1) If 1st try is failed and iam retrying again before 2nd retry i have to check for "xxxxxxx" entry in the log file. 2) If "XXXXXXX" entry is... (4 Replies)
Discussion started by: vinothsekark
4 Replies

4. Shell Programming and Scripting

Shell Script to Retry and Exit

ok, so I'm trying to add a function to my local script that runs a command on a remote host. The reason why this is needed is that, there are other scripts that run different commands on the same remote host. so the problem is that many times there are multiple scripts being run on the remote... (1 Reply)
Discussion started by: SkySmart
1 Replies

5. Shell Programming and Scripting

Column operation : cosne and sine operation

I have a txt file with several columns and i want to peform an operation on two columns and output it to a new txt file . file.txt 900.00000 1 1 1 500.00000 500.00000 100000.000 4 4 1.45257346E-07 899.10834 ... (4 Replies)
Discussion started by: shashi792
4 Replies

6. Shell Programming and Scripting

Retry upon FTP failure

I am using the following code in a C Shell script to transfer files to a remote server: ftp -n logxx.xxxx.xxx.xxx.com <<DO_FTP1 quote user $user_name quote pass $password ascii put $js_file_name bin put $FinalZipFile quit DO_FTP1 This code works great except on those rare occasions... (8 Replies)
Discussion started by: phudgens
8 Replies

7. Shell Programming and Scripting

Retry every ten seconds while lockfile present

Hi, I have written below check lockfile script but need some tweaking on it. If there is a lockfile from present, I need the script to retry every 10 seconds to see if the lockfile is still there. After 120 seconds it should send an email. In my current version, if the script encounters... (6 Replies)
Discussion started by: Meert
6 Replies

8. Shell Programming and Scripting

retry process in ftp

hi #!/bin/bash SERVER=10.89.40.35 USER=xyz PASSWD=xyz ftp -in $SERVER<<EOF user $USER $PASSWD mkdir PPL cd /path of remote dir lcd /path of local dir hash bin put <file name> bye <<EOF The above ftp script i have to schedule in crontab at a particular instance of time run daily.... (2 Replies)
Discussion started by: rookie250
2 Replies

9. UNIX for Advanced & Expert Users

Enomem in Journal Retry Error

Hi, Does anyone seen this error before.. kernel: ENOMEM in journal_alloc_journal_head, retrying. I encounter this problem on IBM eServers where when the above error appears usually the machine is dead or hanged. Unless a hard reboot is been done. Is this something have to do with the memory... (1 Reply)
Discussion started by: killerserv
1 Replies

10. UNIX for Advanced & Expert Users

SCO Unix printer waiting for auto-retry

Running SCO 5.0.5 with all the updates available on a Compaq 800 and just ran into this problem of the printer that is hooked up to /dev/lp0 &or /dev/lp. The printer has been working fine for 5 plus years and still works on another machine. I've uninstalled & re-installed the parallel port and... (0 Replies)
Discussion started by: cfaiman
0 Replies

Featured Tech Videos