Path: csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail From: Eli Schwartz Newsgroups: gnu.bash.bug Subject: Re: Return from function depending on number of parameters Date: Fri, 3 Jul 2020 18:16:32 -0400 Lines: 102 Approved: bug-bash@gnu.org Message-ID: References: <4766f763-84b7-f018-f925-7c6390ed7523@archlinux.org> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="oMa14PW3WmI4ubb6JZrJfwR1jmC4lWBlp" X-Trace: usenet.stanford.edu 1593814612 14699 209.51.188.17 (3 Jul 2020 22:16:52 GMT) X-Complaints-To: action@cs.stanford.edu To: bug-bash@gnu.org Envelope-to: bug-bash@gnu.org X-Spam-BL-Results: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1593814596; bh=rsNlpJjWu08c01tYQjVZNi3nsT7BsbkL7NjtdSaUeIE=; h=Subject:To:References:From:Date:In-Reply-To; b=llyCgdbp70jx//hFnCJcgRt8+IDhOHAn7+HdnqFmfvI29xhEvLfYA6S5zp+wKvzqJ 3EKXlIMwduqJhfw2SHUOyVrk5g+Zuej8owhRqVFnYgPmVaFpGost3aFIRykaivHeZ1 z/hYlHgHNnVyv8F59VCNwiVhY5lSNXf7BTZuVvpeFa69v3wXvrCWLOd64ReVjaAGas 6bMg0KnrubNEAArJEJYP9HADic4L607rQaHZV/w8C0lRUsXiw2xwHHPwkInFn7XAsT f/KOgxpzpI+E7heru3pS2bV2iSjsxgAFlqTjD8S7MMxKIpt/GESwmVnXfoPbhhgbHu a/3xBInLziAuztyOeLwoc2X/4SKHxeB8/WdN5DXsGi7eIPA6iduXhaQRQv0sCIUOJZ DyCRFdFkf4BjLNd/MIbjCSEmGgge1fjIsirCQIJfYgdfpAfogPkvSD1kOyPBYaBKAt v/dQc0R+Zlkoa09w8PJ66EJqi2erx919ytssBGEnj37S1aar6w+scXIG226lDPVoAB sr+Av3bv3IL+lFCRd7ByHv9NKjYPZVtVobr/GUZwUIoj9KMr25C42ZqApFZNQ41s8+ GaGi+fhMUOQCz1qXbq73KUh7Fr9Dub/FRTkjff6h4GVPCw0b0K1LX5HeBF2s82dTV7 3v1HJXQeR4d3hs3woO3y0BZg= X-Clacks-Overhead: GNU Terry Pratchett User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 In-Reply-To: Received-SPF: pass client-ip=2a01:4f8:160:6087::1; envelope-from=eschwartz@archlinux.org; helo=orion.archlinux.org X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -53 X-Spam_score: -5.4 X-Spam_bar: ----- X-Spam_report: (-5.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <4766f763-84b7-f018-f925-7c6390ed7523@archlinux.org> X-Mailman-Original-References: Xref: csiph.com gnu.bash.bug:16531 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --oMa14PW3WmI4ubb6JZrJfwR1jmC4lWBlp Content-Type: multipart/mixed; boundary="dEh7sgxsb4VR9CsKx6PH14UQqXJ0gq7Ng" --dEh7sgxsb4VR9CsKx6PH14UQqXJ0gq7Ng Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: quoted-printable On 7/3/20 2:00 PM, Chris Elvidge wrote: > I've used 'return $((!$#))' and 'return $[!$#]' to return an error if n= o > parameters given to function. >=20 > Tested in a bash script 'exit $((!$#)) / $[!$#]' - both work. >=20 > 'echo=C2=A0 $((!$#)) / $[!$#]' - both echo 1 when no params, 0 when any= > number of params. >=20 > I'm told ( https://wiki.bash-hackers.org/scripting/obsolete ) that > $[...] is obsolete and that $((...)) should be used instead. OK so far.= >=20 > However 'N=3D0; 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=3D0; 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=3D0; echo $((!$N)) N=3D0; echo $((histexpandN)) 0 $ N=3D0; echo $((!$N)) N=3D0; echo $(()N)) -bash: syntax error near unexpected token `)' $ N=3D0 $ echo $((!$N)) echo $((N=3D0N)) -bash: N=3D0N: value too great for base (error token is "0N") =2E.. =46rom there, people can give useful advice for solving the problem. (My preferred advice is "disable histexpand".) --=20 Eli Schwartz Arch Linux Bug Wrangler and Trusted User --dEh7sgxsb4VR9CsKx6PH14UQqXJ0gq7Ng-- --oMa14PW3WmI4ubb6JZrJfwR1jmC4lWBlp Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEvSewel70XCra9w4EhIGKaBmvSpsFAl7/rkAACgkQhIGKaBmv Spsgfw/+IBXh0UzyrrrwDaEt9KqcOLyvuwDpLIYcxjwhWRUm7o1OMVZE0TjHT0UV y8UiftaZnhUCiycN3l1cPjV3jeICxmFb+c/cTvy/fPn9XM/TpLIH0eMy1HjkbwR8 4DRb3iCS5lUpQWKSv1ChiqBRcYpu/CqpSF80RNdZl3p0JadJ+wQYK0xHi/Np46Ef u6dK3uYTyH8tJzeJYNI/1Ywu8s4Bb779ihusAaIFXB1vItiNUpda3TT0rE2wJaPQ pbQddvlTPbxM2r6zer/bc1BzFfDbLYVVEKeYxYOj06wYXv2ygfCVIBH+N3iyBwka ibTzTJNdsZ7uPZQRbObhTE121sJ+JcfuoY2uoitIly0tYDzV+K3kYwtseIMJuj85 9n3dDazP6vo5QxCIFlGE0KztshKBr9EI8WGy+VnS386oqH4/uTeF9C2Zpb8V0NXS gTZ0uHcbB/o3SQtvW23TV2TqkB6hJmCVxhdddoHhzUiRPjA60OpopK3fYOtmT0yV kFxlyHqS+NZGVIJASpvUZoIy3lH2vW2QddlUvRXQx/BYMYXHCCHLXwiVXoedD7Fp ek3iGv8YX6eVJfp0dwrZCqzCZO4v/SxUO6JlPcMasfbXumHBWW1N+YVJmsGrPQ9G n6DPt4WOtvt10chM8x1maiQch2ORIm76ACbn1V3X8WRfS/OP7QOJAjMEAQEKAB0W IQRgQRMEwJ02YoNA7v/OsWfvtXIr1gUCXv+uQAAKCRDOsWfvtXIr1nX2D/9yVkv9 vu45GaWDuejStd9/n7e9nKQlyaREzLKfsgyFP2vXgwesAcvlpCxPF69KEq5t8An6 xNp2dnoRMfEEvrjvG5DgI7CJYYxi6f9XzgOyYekl//mnAXWuBjnYUKxZJelXqiTQ wozBy3KEs4qdp5icxNR8QPI0cCUL1LczVtgB/kPO7PMm59X3y4xZNy8oXpsJ1urC Qq9EU2gP4d1F2fBbMQPrMP4/XimrHmop+3TkWWhXZ8p359wy+00x0r9R7jeN4/C4 FxBSyj/L4QwDxYTdpdcU735caFZM02mEA5aL9HcqIdrH+zBqS4cTvFVsWHx/Z+gy rqwkl1QqizUJHgCjlZtn3hVNWx2kCNKF2DQZ8RNYvMn2TcnN3DzOHeTIOuWAfKFj o/jmQQoGBbcm0/B6XJmcOq4EzIw7kYWX4lQLAoN3CPX0RERUwQeIqufrI2B2aDWz C25QMRi5URdjFBy6fqU8dPBlrnc+tBYqJOLLZuCk8qL4FZFccFAeoVSGk6463UyI Am637NT31A91sKmxde6prHMs3pAjuCwNKuRtHLlAwlnj9gIZMa4xnLxLUqQsGh2j uHcWqY57UolBSSu4aqVKOzoAptHitjYPYrVE08TLCSHn3XFxqAUL/FAjoPOfFU2Y fPRmkPtqCtiMhAsboVeW6Ip1zs53hdD5H9mxFA== =JuOj -----END PGP SIGNATURE----- --oMa14PW3WmI4ubb6JZrJfwR1jmC4lWBlp--