[Rd] Dialect for shell scripts
Paul McQuesten
mcquesten at gmail.com
Mon Dec 18 23:36:13 CET 2017
I do not have a dog in this fight, but I have to ask:
How much person time is worthwhile to invest in supporting Solaris 10?
It has been closed-source (Post-Oracle)
<https://en.wikipedia.org/wiki/Solaris_(operating_system)#Post-Oracle_closed_source_(Solaris_10_after_March_2010,_and_Solaris_11_(2011_and_later))>
since
March 2010.
On Mon, Dec 18, 2017 at 1:23 PM, Kurt Hornik <Kurt.Hornik at wu.ac.at> wrote:
> >>>>> Iñaki Úcar writes:
>
> Same from here: in addition to what the standards say, it always pays to
> be defensive and check "Portable Shell Programming" in the Autoconf
> manual. Among other things, this says
>
> '$((EXPRESSION))'
> Arithmetic expansion is not portable as some shells (most notably
> Solaris 10 '/bin/sh') don't support it.
>
> motivating the code shown below. Perhaps simplest to always use expr.
>
> -k
>
>
> > For what it's worth, Autoconf does not assume that arithmetic
> > expansion will be available. Instead, it emits the following shell
> > code:
>
> > if ( eval 'test $(( 1 + 1 )) = 2' ) 2>/dev/null; then
> > eval 'func_arith ()
> > {
> > func_arith_result=$(( $* ))
> > }'
> > else
> > func_arith ()
> > {
> > func_arith_result=`expr "$@"`
> > }
> > fi
>
> > 2017-12-17 23:55 GMT+01:00 Rodrigo Tobar <rtobar at icrar.org>:
> >> Dear all,
> >>
> >> During a recent package submission, we were highlighted that some lines
> in
> >> our configure script didn't follow the correct syntax. The lines looked
> like
> >> this:
> >>
> >> x=$(($y/10))
> >>
> >> We were indicated at the time that this is because the statement does
> not
> >> use Bourne shell syntax, which is absolutely true, and also that the
> manual
> >> warns about this, which is true again. So far everything is clear.
> >>
> >> However, what confuses me is that even when the manual says that "you
> can
> >> include an executable (Bourne) shell script configure in your package"
> [1],
> >> the associated footnote says something slightly different: "The script
> >> should only assume a POSIX-compliant /bin/sh" [2]. The footnote goes
> even
> >> further, and links to the POSIX specification of the Shell Command
> Language
> >> [3] (as published by The Open Group), which explicitly includes
> arithmetic
> >> expressions like the one above in its syntax [4].
> >>
> >> My question then is: what exact dialect should be considered? Given
> that the
> >> statement above does not work in the Bourne shell, I conclude that the
> >> Bourne shell is not POSIX-compliant. That in turn would make the manual
> >> ambiguous as to the precise dialect that should be used by our configure
> >> scripts, and either the shells used by R should be changed to be
> >> POSIX-compliants, or the manual edited to be more precise regarding .
> >>
> >> Many thanks.
> >>
> >> Rodrigo
> >>
> >> [1]
> >> https://cran.r-project.org/doc/manuals/r-release/R-exts.
> html#Configure-and-cleanup
> >> [2] https://cran.r-project.org/doc/manuals/r-release/R-exts.html#FOOT25
> >> [3] http://pubs.opengroup.org/onlinepubs/9699919799/
> utilities/V3_chap02.html
> >> [4]
> >> http://pubs.opengroup.org/onlinepubs/9699919799/
> utilities/V3_chap02.html#tag_18_06_04
> >>
> >> ______________________________________________
> >> R-devel at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
>
> > --
> > Iñaki Úcar
> > http://www.enchufa2.es
> > @Enchufa2
>
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
[[alternative HTML version deleted]]
More information about the R-devel
mailing list