File: arith10.sub

package info (click to toggle)
bash 5.3-2
  • links: PTS
  • area: main
  • in suites: sid
  • size: 44,432 kB
  • sloc: ansic: 134,747; sh: 8,866; yacc: 5,966; makefile: 4,697; perl: 4,105; asm: 48; awk: 23; sed: 16
file content (95 lines) | stat: -rw-r--r-- 2,225 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#   Copyright 2025 The Free Software Foundation
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# let's see how various arithmetic contexts handle embedded double quotes and
# empty expressions

declare -a a

afunc()
{
	a[0]=0

	( a[" "]=10 ; declare -p a )
	( (( a[" "]=11 )) ; declare -p a )
	( : $(( a[" "]=12 )) ; declare -p a )
	( let a\[" "\]=13 ; declare -p a )

	( declare "a[\" \"]=14" ; declare -p a )

	( a[\" \"]=15; declare -p a )
	( (( a[\" \"]=16 )) ; declare -p a )
	( : $(( a[\" \"]=17 )) ; declare -p a )
	( let "a[\" \"]"=18 ; declare -p a )

	( a[\"\"]=19 ; declare -p a )
	( (( a[\"\"]=20 )) ; declare -p a  )
	( : $(( a[\"\"]=21 )) ; declare -p a )
	( let "a[\"\"]"=22 ; declare -p a )

	( a[""]=23 ; declare -p a )
	( (( a[""]=24 )); declare -p a )
	( : $(( a[""]=25 )); declare -p a )
	( let 'a[""]=26' ; declare -p a )
}

echo == arraysub ==
shopt -u assoc_expand_once
echo === assoc_expand_once unset ===
afunc

unset a
declare -a a

shopt -s assoc_expand_once
echo === assoc_expand_once set ===
afunc
unset a

echo == substring ==
a=12345

echo ${a:0:2}
echo ${a::2}

echo ${a:2:0}
echo ${a:2:}
echo ${a:2}

echo == cond ==
[[ "" -gt 1 ]] ; echo $?
[[ 1 -le "" ]] ; echo $?
[[ 0 -eq "" ]] ; echo $?

echo == arithsub ==
echo $(( )) ; echo 1 $?
echo $(( "" )) ; echo 2 $?
echo $(( \"\" )) ; echo 3 $?
echo $(()) ; echo 4 $?
a=$(( )) ; echo 5 $?
a=$(( "" )) ; echo 6 $?

echo == arithcmd ==
(( )) ; echo 1 $?
(( "" )) ; echo 2 $?
(( " " )) ; echo 3 $?
(( 1 - "" )) ; echo 4 $?

echo == letbltin ==
let '' ; echo 1 $?
let ' ' ; echo 2 $?
let '0 - ""' ; echo 3 $?
let "0 - \"\"" ; echo 4 $?