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 --]
next prev parent 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).