* [9front] bc and < >
@ 2022-01-10 11:49 Benjamin Riefenstahl
2022-01-10 12:14 ` Eckard Brauer
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Benjamin Riefenstahl @ 2022-01-10 11:49 UTC (permalink / raw)
To: 9front
Hi all,
I'm trying to write a script in rc that needs to compare numbers. It
seems that rc does not do math, so I try to use bc for that. But I
encounter this:
term% echo '1 < 2' | bc
stdin:1 syntax error
2
man bc says this should work, right?
Thanks, benny
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 11:49 [9front] bc and < > Benjamin Riefenstahl
@ 2022-01-10 12:14 ` Eckard Brauer
2022-01-10 12:29 ` Benjamin Riefenstahl
2022-01-10 12:14 ` 有澤 健治
2022-01-10 12:23 ` Eckard Brauer
2 siblings, 1 reply; 13+ messages in thread
From: Eckard Brauer @ 2022-01-10 12:14 UTC (permalink / raw)
To: 9front
> I'm trying to write a script in rc that needs to compare numbers. It
> seems that rc does not do math, so I try to use bc for that. But I
> encounter this:
>
> term% echo '1 < 2' | bc
> stdin:1 syntax error
> 2
>
> man bc says this should work, right?
maybe as a workaround:
% a=1; b=2; x=`{echo $a-$b | bc | cut -c1}; if (~ $x -) echo less
less
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 11:49 [9front] bc and < > Benjamin Riefenstahl
2022-01-10 12:14 ` Eckard Brauer
@ 2022-01-10 12:14 ` 有澤 健治
2022-01-10 13:25 ` Benjamin Riefenstahl
2022-01-10 12:23 ` Eckard Brauer
2 siblings, 1 reply; 13+ messages in thread
From: 有澤 健治 @ 2022-01-10 12:14 UTC (permalink / raw)
To: 9front
TEST(1) TEST(1)
n1 -eq n2 True if the integers n1 and n2 are arithmetically
equal. Any of the comparisons -ne, -gt, -ge,
-lt, or -le may be used in place of -eq.
On 2022/01/10 20:49, Benjamin Riefenstahl wrote:
> Hi all,
>
> I'm trying to write a script in rc that needs to compare numbers. It
> seems that rc does not do math, so I try to use bc for that. But I
> encounter this:
>
> term% echo '1 < 2' | bc
> stdin:1 syntax error
> 2
>
> man bc says this should work, right?
>
> Thanks, benny
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 11:49 [9front] bc and < > Benjamin Riefenstahl
2022-01-10 12:14 ` Eckard Brauer
2022-01-10 12:14 ` 有澤 健治
@ 2022-01-10 12:23 ` Eckard Brauer
2022-01-10 13:24 ` Benjamin Riefenstahl
2 siblings, 1 reply; 13+ messages in thread
From: Eckard Brauer @ 2022-01-10 12:23 UTC (permalink / raw)
To: 9front
> term% echo '1 < 2' | bc
> stdin:1 syntax error
> 2
>
> man bc says this should work, right?
just found that cut isn't included in P9P, but from the linux system,
so better use:
echo 'if (1<2) print 1' | bc
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 12:14 ` Eckard Brauer
@ 2022-01-10 12:29 ` Benjamin Riefenstahl
0 siblings, 0 replies; 13+ messages in thread
From: Benjamin Riefenstahl @ 2022-01-10 12:29 UTC (permalink / raw)
To: 9front
Hi Eckard,
Eckard Brauer writes:
> maybe as a workaround:
Thanks. Yes, there are a number of workarounds.
benny
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 12:23 ` Eckard Brauer
@ 2022-01-10 13:24 ` Benjamin Riefenstahl
2022-01-10 14:00 ` Eckard Brauer
0 siblings, 1 reply; 13+ messages in thread
From: Benjamin Riefenstahl @ 2022-01-10 13:24 UTC (permalink / raw)
To: 9front
Eckard Brauer writes:
> echo 'if (1<2) print 1' | bc
Interesting. That actually works. Although there does not seem to be
an "else". So the best workaround so far still seems to be a different
language.
benny
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 12:14 ` 有澤 健治
@ 2022-01-10 13:25 ` Benjamin Riefenstahl
0 siblings, 0 replies; 13+ messages in thread
From: Benjamin Riefenstahl @ 2022-01-10 13:25 UTC (permalink / raw)
To: 9front
有澤 健治 writes:
> TEST(1)
Ah, the manual does not mention that "test" exists. Somebody should
probably add that to the "SEE ALSO" of rc.
Thanks, benny
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 13:24 ` Benjamin Riefenstahl
@ 2022-01-10 14:00 ` Eckard Brauer
2022-01-11 6:29 ` cinap_lenrek
0 siblings, 1 reply; 13+ messages in thread
From: Eckard Brauer @ 2022-01-10 14:00 UTC (permalink / raw)
To: 9front
> Interesting. That actually works. Although there does not seem to be
> an "else". So the best workaround so far still seems to be a
> different language.
So I'd extend to:
echo 'r=0; if (1<2) r=1 print r' | bc
Works with P9P, don't have a real 9front here @work.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-10 14:00 ` Eckard Brauer
@ 2022-01-11 6:29 ` cinap_lenrek
2022-01-12 8:00 ` Eckard Brauer
0 siblings, 1 reply; 13+ messages in thread
From: cinap_lenrek @ 2022-01-11 6:29 UTC (permalink / raw)
To: 9front
# this misses semicolon after r=1:
term% echo 'r=0; if (1<2) r=1 print r' | bc
stdin:1 syntax error
0
# fixed version works:
term% echo 'r=0; if (1<2) r=1; print r' | bc
1
--
cinap
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-11 6:29 ` cinap_lenrek
@ 2022-01-12 8:00 ` Eckard Brauer
2022-01-12 9:13 ` Marc Chantreux
2022-01-13 5:22 ` umbraticus
0 siblings, 2 replies; 13+ messages in thread
From: Eckard Brauer @ 2022-01-12 8:00 UTC (permalink / raw)
To: 9front
> # this misses semicolon after r=1:
> term% echo 'r=0; if (1<2) r=1 print r' | bc
> stdin:1 syntax error
> 0
>
> # fixed version works:
> term% echo 'r=0; if (1<2) r=1; print r' | bc
> 1
Correct... mea culpa.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-12 8:00 ` Eckard Brauer
@ 2022-01-12 9:13 ` Marc Chantreux
2022-01-13 5:22 ` umbraticus
1 sibling, 0 replies; 13+ messages in thread
From: Marc Chantreux @ 2022-01-12 9:13 UTC (permalink / raw)
To: 9front
hello,
i really think heredocs are much more readable than echo.
> > # fixed version works:
> > term% echo 'r=0; if (1<2) r=1; print r' | bc
> > 1
<<. bc
r=0
if (1<2) r=1
r
.
regards
--
Marc Chantreux
Direction du numérique de l'Université de Strasbourg
Pôle de Calcul et Services Avancés à la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-12 8:00 ` Eckard Brauer
2022-01-12 9:13 ` Marc Chantreux
@ 2022-01-13 5:22 ` umbraticus
2022-01-13 12:17 ` sirjofri
1 sibling, 1 reply; 13+ messages in thread
From: umbraticus @ 2022-01-13 5:22 UTC (permalink / raw)
To: 9front
depending on what you want you can also do Peano-like stuff...
; one = one
; two = (one $one)
; three = (one $two)
; five = ($two $three)
; four = $five($#two-)
; quinque = `{seq 5}
; if(~ $#five $#quinque) echo equal
equal
umbraticus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] bc and < >
2022-01-13 5:22 ` umbraticus
@ 2022-01-13 12:17 ` sirjofri
0 siblings, 0 replies; 13+ messages in thread
From: sirjofri @ 2022-01-13 12:17 UTC (permalink / raw)
To: 9front
13.01.2022 06:22:34 umbraticus@prosimetrum.com:
> depending on what you want you can also do Peano-like stuff...
>
> ; one = one
> ; two = (one $one)
> ; three = (one $two)
> ; five = ($two $three)
> ; four = $five($#two-)
> ; quinque = `{seq 5}
> ; if(~ $#five $#quinque) echo equal
> equal
Iirc, someone built a math rc library using this technique.
Also you can just use numbers:
valuefive=`{seq 5}
if(~ $#valuefive 5) echo is five
combined=($valuefive $valuefive)
if(~ $#combined 10) echo is ten
sirjofri
PS: it's a nice toy. But don't do that. Use the right tool.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-01-14 4:07 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-10 11:49 [9front] bc and < > Benjamin Riefenstahl
2022-01-10 12:14 ` Eckard Brauer
2022-01-10 12:29 ` Benjamin Riefenstahl
2022-01-10 12:14 ` 有澤 健治
2022-01-10 13:25 ` Benjamin Riefenstahl
2022-01-10 12:23 ` Eckard Brauer
2022-01-10 13:24 ` Benjamin Riefenstahl
2022-01-10 14:00 ` Eckard Brauer
2022-01-11 6:29 ` cinap_lenrek
2022-01-12 8:00 ` Eckard Brauer
2022-01-12 9:13 ` Marc Chantreux
2022-01-13 5:22 ` umbraticus
2022-01-13 12:17 ` sirjofri
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).