>>>>> 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 <rto...@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@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > -- > Iñaki Úcar > http://www.enchufa2.es > @Enchufa2 > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel