Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #16537

Re: Return from function depending on number of parameters

From Chris Elvidge <celvidge001@gmail.com>
Newsgroups gnu.bash.bug
Subject Re: Return from function depending on number of parameters
Date 2020-07-04 11:44 +0100
Message-ID <mailman.948.1593878708.2574.bug-bash@gnu.org> (permalink)
References <b1c19d38-64c0-f1ae-d08a-1ada435a0022@gmail.com> <4766f763-84b7-f018-f925-7c6390ed7523@archlinux.org> <rdpmi7$112n$1@ciao.gmane.io>

Show all headers | View raw


On 03/07/2020 11:16 pm, Eli Schwartz wrote:
> On 7/3/20 2:00 PM, Chris Elvidge wrote:
>> I've used 'return $((!$#))' and 'return $[!$#]' to return an error if no
>> parameters given to function.
>>
>> Tested in a bash script 'exit $((!$#)) / $[!$#]' - both work.
>>
>> 'echo  $((!$#)) / $[!$#]' - both echo 1 when no params, 0 when any
>> number of params.
>>
>> I'm told ( https://wiki.bash-hackers.org/scripting/obsolete ) that
>> $[...] is obsolete and that $((...)) should be used instead. OK so far.
>>
>> However 'N=0; echo $((!$N))' gives an error at the bash prompt. 'echo
>> $[!$N]' echo's 1 as expected.
> 
> "gives an error" is a useless bug report. It works for me.
> 
> $ N=0; echo $((!$N))
> 1
> 
> My initial reaction to reading this thread is head scratching!
> 
> As the other reply mentioned, there's actually a good explanation for
> why we get different results -- I disabled an annoying feature.
> 
> $ set -o histexpand
> 
> Now here's a useful bug report. "When I run this, I get the following
> incorrect results or error message":
> 
> $ N=0; echo $((!$N))
> N=0; echo $((histexpandN))
> 0
> $ N=0; echo $((!$N))
> N=0; echo $(()N))
> -bash: syntax error near unexpected token `)'
> $ N=0
> $ echo $((!$N))
> echo $((N=0N))
> -bash: N=0N: value too great for base (error token is "0N")
> 
> ...
> 
>  From there, people can give useful advice for solving the problem. (My
> preferred advice is "disable histexpand".)
> 

Thanks for the info on histexpand and the advice on bug reporting. 
Obviously I didn't read the manual - I didn't know about histexpand.
Should that be 'set +o histexpand' to turn it off?

-- 
Chris Elvidge
England

Back to gnu.bash.bug | Previous | Next | Find similar


Thread

Re: Return from function depending on number of parameters Chris Elvidge <celvidge001@gmail.com> - 2020-07-04 11:44 +0100

csiph-web