shell: fix arithmentic evaluation of "++7" and such (it is + + 7, i.e. 7)

function                                             old     new   delta
evaluate_string                                      945     988     +43

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2021-09-25 22:04:45 +02:00
parent 627821e42b
commit d84a604830
9 changed files with 65 additions and 46 deletions

View File

@@ -106,6 +106,7 @@ hush: arithmetic syntax error
3 3
4 4
4 4
7 7
hush: arithmetic syntax error
hush: arithmetic syntax error
hush: arithmetic syntax error
@@ -114,6 +115,8 @@ hush: arithmetic syntax error
4 4
7 7
-7 -7
7
7
hush: arithmetic syntax error
hush: arithmetic syntax error
hush: arithmetic syntax error
@@ -128,11 +131,12 @@ hush: arithmetic syntax error
2 2
-2 -2
1 1
hush: arithmetic syntax error
hush: arithmetic syntax error
hush: arithmetic syntax error
hush: arithmetic syntax error
hush: arithmetic syntax error
7
7
7
7
7
7
5 5
1 1
6 6
@@ -141,8 +145,10 @@ hush: arithmetic syntax error
1 1
4 4
0 0
hush: arithmetic syntax error
hush: arithmetic syntax error
-7
-7
7
7
8 12
hush: arithmetic syntax error
42

View File

@@ -255,8 +255,8 @@ echo 3 $x
echo 4 $(( ++x ))
echo 4 $x
# bash 3.2 apparently thinks that ++7 is 7
#ash# echo 7 $(( ++7 ))
# ++ is not a inc operator on non-variable, it is the + + sequence
echo 7 $(( ++7 ))
( echo $(( 7-- )) )
( echo $(( --x=7 )) )
@@ -270,9 +270,9 @@ echo 4 $x
echo 7 $(( +7 ))
echo -7 $(( -7 ))
# bash 3.2 apparently thinks that ++7 is 7
#ash# echo $(( ++7 ))
#ash# echo $(( --7 ))
# ++ is not a inc operator on non-variable, it is the + + sequence
echo $(( ++7 ))
echo $(( --7 ))
${THIS_SH} ./arith1.sub
${THIS_SH} ./arith2.sub

View File

@@ -35,6 +35,6 @@ echo 1 $a
#ash# (( ++ ))
( echo $(( +++7 )) )
# bash 3.2 apparently thinks that ++ +7 is 7
#ash# echo $(( ++ + 7 ))
# ++ is not a inc operator on non-variable, it is the + + sequence
echo $(( ++ + 7 ))
#ash# (( -- ))

View File

@@ -1,4 +1,4 @@
# bash 3.2 apparently thinks that ++7 is 7 etc
# ++ and -- are not inc/dec operators on non-variables, they are + + and - - sequences
( echo $(( --7 )) )
( echo $(( ++7 )) )
( echo $(( -- 7 )) )
@@ -37,13 +37,13 @@ echo 4 $(( 4 - -- a ))
echo 0 $a
#ash# (( -- ))
# bash 3.2 apparently thinks that ---7 is -7
#ash# echo $(( ---7 ))
# -- is not a dec operator on non-variable, it is the - - sequence
echo $(( ---7 ))
( echo $(( -- - 7 )) )
#ash# (( ++ ))
# bash 3.2: 7
#ash# echo 7 $(( ++7 ))
# ++ is not a inc operator on non-variable, it is the + + sequence
echo $(( ++7 ))
( echo $(( ++ + 7 )) )
# bash 3.2: -7