Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #16533
| From | Chris Elvidge <celvidge001@gmail.com> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | Re: Return from function depending on number of parameters |
| Date | 2020-07-04 12:54 +0100 |
| Message-ID | <mailman.934.1593863651.2574.bug-bash@gnu.org> (permalink) |
| References | <b1c19d38-64c0-f1ae-d08a-1ada435a0022@gmail.com> <4766f763-84b7-f018-f925-7c6390ed7523@archlinux.org> <73b2d4c9-badf-e059-3a77-57d2f9ef197b@gmail.com> |
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 pointers to a better bug report. And thanks for the info on histexpand. I obviously should read the manual more carefully - I'd never come across it - as it's set by default, not in any profile or bashrc file. Did you mean set +o histexpand to disable the feature? -- Chris Elvidge
Back to gnu.bash.bug | Previous | Next | Find similar
Re: Return from function depending on number of parameters Chris Elvidge <celvidge001@gmail.com> - 2020-07-04 12:54 +0100
csiph-web