9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Mack Wallace <mackbw@mapinternet.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] How does one read a file line by line in an rc script?
Date: Sat,  5 Jan 2019 18:28:11 -0500	[thread overview]
Message-ID: <EDD818FE-8112-4A47-BB9F-3F53411C65A8@mapinternet.com> (raw)
In-Reply-To: <F376FA6C-F99B-4238-A024-607647E8AB9D@quintile.net>

[-- Attachment #1: Type: text/plain, Size: 2809 bytes --]

Thank you Steve.

But unfortunately...

That gives me “rc (testread): variable name not singleton!”

Trying the read with the -m option gets me the following errors repeated over and over until I escape out.
“awk i/o error occurred on /dev/stdin
 source line number 1
awk: i/o error occurred while closing /dev/stdin
 source line number 1" 

From the command line:

cat testdata | read

Gives me the first line of the file.

cat testdata | read -m

Puts all lines of the file to stdout.

There was a sample script at the bottom of http://doc.cat-v.org/plan_9/4th_edition/papers/rc <http://doc.cat-v.org/plan_9/4th_edition/papers/rc> that I’ve copied below.

It creates its own read function. This is for getting text from stdin. But I’m not seeing how it works - or if it is a path to get where I want to go. I tried to copy that read function and put it at the top of my script and the “while(read line) syntax below my other work. When I ran the script it just waits for some input - after which, it runs trough my other lines, not responding to my input file as $1 is defined in the function, and then when it gets to the while, it prompts me again. I tried to cat into the awk ‘{print; exit}’ in the while structure - but that didn’t work either.


hmmm….

Mack




t=/tmp/holmdel$pid

fn read{
    $1=‘{awk ’{print;exit}’}
}

ifs=’
’  # just a newline

fn sigexit sigint sigquit sighup{
    rm -f $t
    exit
}

cat <<’!’ >$t
Allentown 
...
Holmdel
...
West Long Branch
!

while(){
   lab=‘{fortune $t}
   echo $lab
   if(~ $lab Holmdel){
      echo You lose.
      exit
   }
   while(read lab; ! grep -i -s $lab $t) echo No such location.
   if(~ $lab [hH]olmdel){
      echo You win.
      exit
   }
}





> On Jan 5, 2019, at 5:45 PM, Steve Simon <steve@quintile.net> wrote:
> 
> 
> try
> 
> cat $1 | while(line=`{read}){
> echo $line
> }
> 
> no doubt you cam do without the cat but i am unsure off hand where to put the redirect in and i am not on plan9 just now.
> 
> -Steve
> 
> On 5 Jan 2019, at 10:34 pm, Mack Wallace <mackbw@mapinternet.com <mailto:mackbw@mapinternet.com>> wrote:
> 
>> Another, probably more stupid question - How does one read a text file line by line in an rc script.
>> 
>> In bash this works:
>> 
>> #!/bin/bash  
>> 
>> while read line  
>> do  
>> echo $line  
>> done < $1 
>> 
>> I’ve tried:
>> 
>> #!/bin/rc  
>> 
>> while (line=`{read $1})  
>> {
>> echo $line  
>> } 
>> 
>> Which produces the first line of the file in an infinite loop. I’ve tried the -m argument with no output.
>> 
>> 
>> It’s probably simple, but just can’t seem to find the equivalent.
>> 
>> Regards,
>> 
>> Mack
>> 
>> 
>> 


[-- Attachment #2: Type: text/html, Size: 7768 bytes --]

  reply	other threads:[~2019-01-05 23:28 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-05 22:34 Mack Wallace
2019-01-05 22:45 ` Steve Simon
2019-01-05 23:28   ` Mack Wallace [this message]
2019-01-05 23:46     ` Steve Simon
2019-01-06  0:33       ` Mack Wallace
2019-01-06  0:03 ` Anthony Martin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=EDD818FE-8112-4A47-BB9F-3F53411C65A8@mapinternet.com \
    --to=mackbw@mapinternet.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).