Loop overwrite first input


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop overwrite first input
# 1  
Old 01-06-2015
Loop overwrite first input

HTML Code:
 function one {
      echo "Who is here?"
      read name
  
      echo "Who old are you $name?"
      read age
 
      if [ "$name" == "Sam" ]; then
           Sam="$age"
           else
           Sam="26"
       fi
  
       if [ "$name" == "Jack" ]; then
             Jack="$age"
             else
             Jack="49"
             fi
 
       echo "is there any one else ?"
        read ans
 
        if [ "$ans" == "yes" ]; then
               one;
        else
               print;
         fi
    }
 
 function print {
              echo "Sam($Sam)"
              echo "Jack($Jack)"
     }
 echo "Hi"
 one;
  
The output is
HTML Code:
 Hi
 Who is here?
 Sam
 Who old are you Sam?
 43
 is there any one else ?
 yes
 Who is here?
 Jack
 Who old are you Jack?
 10
 is there any one else ?
 no
 Sam(26)
 Jack(10)

I don't want to overwrite the first input age. I want the output to have the new age for both names. so for the above input , I want the output to be:-

Sam(43)
Jack(10)

# 2  
Old 01-06-2015
Code:
#!/bin/sh

function one ()
{
      echo "Who is here"
      read name
      echo "Who old are you $name"
      read age

      [[ "$name" == "Sam" ]] && Sam=$age
      [[ "$name" == "Jack" ]] &&  Jack=$age

      echo "is there any one else ?"
      read ans

      [[ "$ans" == "yes" ]] && one || print
    }

function print () {
  [[ -z "${Sam}" ]] && echo "Sam(26)" || echo "Sam($Sam)"
  [[ -z "${Jack}" ]] && echo "Jack(49)" || echo "Jack($Jack)"
}

echo "Hi"
one;

This User Gave Thanks to pravin27 For This Post:
# 3  
Old 01-06-2015
That's because the second time you (recursively) call function one, the else branch of if [ "$name" == "Sam" ]; will be taken.

BTW, you have a 16 bit char (0x 3000000, UTF8: 0xE3 0x80 0x80) in two seemingly empty lines that cause "command not found" errors in my bash shell.

Last edited by RudiC; 01-06-2015 at 06:34 AM..
These 2 Users Gave Thanks to RudiC For This Post:
# 4  
Old 01-06-2015
excellent ,thank you . that's work with me
# 5  
Old 01-06-2015
RudiC,
yeah I do see the problem but I did not know how to fix , however , the way pravin27 provided helped. thank you
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

For in loop - two input variables

When I create a newfile, I am using the filename as a variable to create the new filename. When I ouput it, the filename contains the file extension in the middle of the file example: router1.txtshcdpneighbors.txt router2.logshcdpneighbors.txt My initial approach was to strip it out, now I... (2 Replies)
Discussion started by: dis0wned
2 Replies

2. Shell Programming and Scripting

While loop with input in a bash script

I have the following while loop that I put in a script, demo.sh: while read rna; do aawork=$(echo "${rna}" | sed -n -e 's/\(...\)\1 /gp' | sed -f rna.sed) echo "$aawork" | sed 's/ //g' echo "$aawork" | tr ' ' '\012' | sort | sed '/^$/d' | uniq -c | sed 's/*\(*\) \(.*\)/\2: \... (3 Replies)
Discussion started by: faizlo
3 Replies

3. UNIX for Dummies Questions & Answers

While loop, input from find command

Hello nix Experts, I am a *nix rookie and have run into this issue, can some one help me here and let me know what I am doing wrong. /home/user1> while read n > do > echo $n > done < <(find . -type f -ctime -1 | grep abc) I am getting the below error: -sh: syntax error near... (5 Replies)
Discussion started by: babyPen1985
5 Replies

4. Shell Programming and Scripting

Loop breaks on yes/no user input

I have a shell script, and its pretty much done, I decided to add a loop that ends or continues depending on user input. like "would you like to continue?" and if I hit y or yes it will run the loop again until I hit n or no and breaks out of the loop. To be hones I didn't think I needed to add... (2 Replies)
Discussion started by: Demon_Jester
2 Replies

5. Shell Programming and Scripting

make loop from input file

Hi Guys, I have file A.txt PP97 PP66 PP87 PP66 PP47 PP57 PP44 PP20 PP66 PP16 PP13 PP51 PP68 PP70 PP75 PP30 (2 Replies)
Discussion started by: asavaliya
2 Replies

6. Shell Programming and Scripting

Requesting input and for loop

Test - Test (1 Reply)
Discussion started by: Amit Sura
1 Replies

7. Shell Programming and Scripting

Input redirection and for loop

Hello, I need help with a bash script that I try to improve. I could not find answer so far, maybe because I'm not to familiar with the terminology so feel free to correct my language. I have a script that looks like: NODES="node_a node_b node_c" for NODE in $NODES do ... (4 Replies)
Discussion started by: pn8830
4 Replies

8. Shell Programming and Scripting

need help with using input file in the while loop

here's my code: ls -lt | /usr/bin/egrep `date +"%Y%m%d(05|06|07|08|09|10|11|12|13|14|15|16|17|18|19)"` | \ /usr/bin/egrep -i .dat | /usr/bin/awk '{print $9}' > $LockboxFile1 if ] then ... (2 Replies)
Discussion started by: sytycd712
2 Replies

9. Shell Programming and Scripting

input inside while read loop

Hi all Does anyone have a script that will allow me to stop inside a while read loop. I want to pause the loop until a enter is pressed. e.g. While read line do echo something if LINECOUNT > 40 then read ENTER?"PRESS ENTER TO CONT..." ... (3 Replies)
Discussion started by: jhansrod
3 Replies

10. Shell Programming and Scripting

TCSH.need help.take input during a while/end loop

I am writting a script in csh and I am blanking out on how I code in the ability to process user input in the middle of a while/end loop. while(1) args.. end it is a simple script, and I want to add hotkey functions, like q to quit, z to zero counters, etc.. Google has not been very... (1 Reply)
Discussion started by: seg
1 Replies
Login or Register to Ask a Question