Sponsored Content
Top Forums Shell Programming and Scripting awk doesn't understand 'read' statement!!! Post 302796871 by Don Cragun on Sunday 21st of April 2013 04:39:02 AM
Old 04-21-2013
Quote:
Originally Posted by ravisingh
Don Cragun, that may be a good way to test our programs by giving standard input (without specifying any file name). I had run awk programs by giving stnd input.

Now, what I want to say is:
As many told that why I see a link between 'read' and 'continue/break', I also wondered why they wrote so. Because my 1st post reflects the connection. Based on the user input read by the read statement, either 'continue' is executed or 'break' is executed. See my codes, if user inputs 'y' , 'continue' is executed orelse 'break'. I hope this should show the connection.

Now , coming to the other point :--" what is the use of 'continue/break' if awk doesn't understand 'read' statement". You all are right to say that 'continue/break' is used in awk without user interference or without user input. The reason I told becz I have used programs which execute 'continue or break' based on the input as the example I gave you. so, I thought that if user input is not to be used, then the code doesn't need continue or break. If possible, may I expect anyone to give a small algorithm or example to show how without user input, 'continue/break' makes sense.

Alister thanks to say a way of reading stnd input. I will check how it works.
The "program" in your 1st posting is not a valid shell script (although most shells will accept it without complaining. The only valid uses of break and continue are when they are used within a for loop, an until loop, or a while loop. If the script you posted:
Code:
echo "Wanna continue (y/n):\c"
read answer
if [ "$answer" = y ]
then
continue
else
break
fi

is run using bash on OS X, it will either say:
Code:
filename: line 7: break: only meaningful in a `for', `while', or `until' loop

or:
Code:
filename: line 5: continue: only meaningful in a `for', `while', or `until' loop

By the logic you're using above and the shell program below:
Code:
printf "Wanna continue (y/n): "
read answer
if [ "$answer" = y ]
then    exit 0
else    printf "This script will continue.\n"
fi
... ... ...

there is a link between read, exit, and printf (or any other utilities you happen to execute if the value of a condition based on the value of a variable is true or false.

What I was saying about awk is that it can be used interactively or non-interactively. I can also say that bash, ksh, and perl can be used interactively or non-interactively. I have seen a sudoku game that reads the initial values from a file and then interactively reads commands from the user to set open positions to values supplied by the user (and optionally notes all values that could be entered into any unset position based on values that have already been set in that position's quadrant, row, and column). I have seen a similar sudoku game written in ksh93. I have a lot of shell scripts that perform non-interactive updates to homegrown databases (sometimes invoking awk to perform some of the work). Classifying awk, bash, ksh, or perl as interactive or non-interactive seems to me to just show a lack of imagination.

There are many non-interactive scripts where I would find all of the above tools to be bad choices depending on what the script is supposed to do. There are many interactive scripts where I would find all of the above tools to be bad choices depending on what the script is supposed to do. There are many interactive and non-interactive scripts where any or all of the above tools would be good choices depending on what the script is supposed to do.

Look at the requirements for a project and choose appropriate tools to fulfill those requirements. Don't restrict the tools you have in your toolbox based on someone's predefined notion of how those tools are most frequently used.

And hanson44 has just supplied you with several real life examples of using break and continue in loops. Whether these uses are interactive or non-interactive depends on where the input is coming from and what else is going on in the code before and after the given fragments.
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

my case statement doesn't work..

CO UNixware 7.1.1 Hi friends, I have chopped my case statementt out of my .profile and put it in another script called setsid. The case statement works when run from my .profile but not from my setsid file. All that the script does is set an environmental variable based on user input.... (7 Replies)
Discussion started by: sureshy
7 Replies

2. Shell Programming and Scripting

while read loop w/ a nested if statement - doesn't treat each entry individually

Hi - Trying to take a list of ldap suffixes in a file, run an ldapsearch command on them, then run a grep command to see if it's a match, if not, then flag that and send an email alert. The list file (ldaplist) would look like - *********** o=company a o=company b *********** **... (7 Replies)
Discussion started by: littlefrog
7 Replies

3. Shell Programming and Scripting

Not able to understand what's do the statement

Always, I have a confuse/not understand file descriptors. I know about the 0 for standard input 1 for standard output 2 for standard error and 3 to 9 is a additional file descriptor but it's a theoritical knowledge. Could you please give information about below two lines of code in AIX... (1 Reply)
Discussion started by: div_Neev
1 Replies

4. AIX

How to read or understand errors in errpt

Hello, after upgrading the memory to 96GB & 6 Dual Processor for P 550 ( and still not applied the parameters which some experienced posters said in post https://www.unix.com/aix/141835-oracle-database-running-slow-aix-nmon-topas-6.html ) I am getting system dumps. How to understand and... (1 Reply)
Discussion started by: filosophizer
1 Replies

5. Shell Programming and Scripting

My if statement doesn't work why?

I have the following and for some reason I can't have two options together. I mean if I choose -u and -p it won't work... why? #!/bin/bash resetTime=1 mytotalTime=0 totalHour=0 totalMin=0 averagemem=0 finalaverage=0 times=0 function usage() { cat << EOF USAGE: $0 file EOF } (10 Replies)
Discussion started by: bashily
10 Replies

6. UNIX for Dummies Questions & Answers

How to read and understand Sendmail 8.14 log files ?

Can some one please help me know how exactly to understand logs in sendmail 8.14.5. I am pretty new to sendmail. I am running rhel6 on my system and i installed sendmail on it. Its just a test enivornment and i am sending and receiving emails on my localshot only. Jun 13 18:32:38 serv1... (0 Replies)
Discussion started by: Rohit Bhanot
0 Replies

7. Red Hat

Grep doesn't understand escape sequence?

I ran the following grep and sed command. grep "\t" emp.txt sed -n '/\t/p' emp.txt grep treated the '\' as to escape t and took the pattern as literal t whereas sed took the pattern as tab. That means , grep doesn't understand escape sequence!!!!!! what to do to make grep... (8 Replies)
Discussion started by: ravisingh
8 Replies

8. Shell Programming and Scripting

How come this if statement doesn't work?

greetings, the following code isn't working as i expect it to. the first dbl brackets do but the second set gets ignored. ie: if i'm on t70c6n229 it echoes "Something" and i expect it not to. what am i missing? if " ]] || " ]]; then echo "Something" fi thanx! (9 Replies)
Discussion started by: crimso
9 Replies

9. Shell Programming and Scripting

Script doesn't understand if conditiojn with or

I Bourne shell I have a lines #!/bin/sh something for file in *_${Today}*.csv *_${Today}*.txt do if then echo "This file will be processed in separate script" continue fi something done The script doesn't understand if... (6 Replies)
Discussion started by: digioleg54
6 Replies
All times are GMT -4. The time now is 08:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy