Sujet : Re: a sed question
De : janis_papanagnou+ng (at) *nospam* hotmail.com (Janis Papanagnou)
Groupes : comp.unix.shellDate : 22. Dec 2024, 19:23:00
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vk9le5$o2fo$1@dont-email.me>
References : 1 2 3
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
On 22.12.2024 10:19, Ordatious wrote:
On Fri, 20 Dec 2024 15:55:12 +0100, Janis Papanagnou wrote:
you may get subtle errors in future if you continue that habit.
For us newbies, do you have an example?
(I had to look up what in my post you were referring to here...)
It was about -lt vs '<' in comparisons of strings and numbers
respectively. - And I had already answered that elsethread.
Depending on the actual value in a string variable you may get
_correct looking_ result for many values but since you're not
using the correct operator you "unexpectedly" may see errors
that you "can't explain".
The OP was comparing the number of arguments against a value
of 2 with the string comparison. Try (for example) the code
for i in a b c d e f g h i j k l m n o p q r s t u v w x y z
do
set $@ $i
if [ $# '<' 2 ]
then echo "$# < 2"
else echo "$# >= 2"
fi
done
and observe the output
1 < 2
2 >= 2
3 >= 2
4 >= 2
5 >= 2
6 >= 2
7 >= 2
8 >= 2
9 >= 2
10 < 2
11 < 2
12 < 2
13 < 2
14 < 2
15 < 2
16 < 2
17 < 2
18 < 2
19 < 2
20 >= 2
21 >= 2
22 >= 2
23 >= 2
24 >= 2
25 >= 2
26 >= 2
So for "typical" argument numbers <=9 you get the correct result,
but once you have more arguments with this program, or if you
have wrongly used '<' in another program that expects "naturally"
more arguments than the OP's sample program you'll get erroneous
behavior (and might not be aware of that if you're used to using
'<').
It makes thus no sense to use the wrong operator only because it
*sometimes* works correctly even for numeric arguments.
HTH.
Janis