mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-22 13:27:58 +02:00
54 lines
2.1 KiB
Plaintext
54 lines
2.1 KiB
Plaintext
This describes how bash users create, destroy, assign, and reference array
|
|
variables. Array variables are variables whose values are arrays of strings,
|
|
and whose elements may be referenced individually.
|
|
|
|
CREATING
|
|
- any variable may be declared as an array using `typeset -a'
|
|
- an ordinary variable may be converted to an array using
|
|
`typeset -a'; the value becomes array[0]
|
|
|
|
- there is a question of notation used to simultaneously declare
|
|
an array variable and populate it with values sequentially,
|
|
like ksh does with `set -A'. `set -A' is a horrible choice;
|
|
it should be discarded immediately.
|
|
|
|
- we can use `typeset -a array [values...]'
|
|
|
|
DESTROYING
|
|
- `unset name' will destroy the array `name'
|
|
- how to treat `typeset +a array'?
|
|
- I think we should keep the variable, convert it from an
|
|
array to an `ordinary' variable, and make the value at
|
|
the smallest index of the array the value of the new
|
|
variable
|
|
|
|
ASSIGNING
|
|
- array[index]=value will serve to assign values to individual
|
|
elements of the array
|
|
- the subscript can be an arbitrary arithmetic expression; it
|
|
will be run through the expression evaluator
|
|
- this can create arrays, too
|
|
- this is analogous to defining a variable by simply
|
|
assigning to it
|
|
|
|
REFERENCING
|
|
- $array will expand to all elements of the array, just like $*
|
|
expands to all the positional parameters
|
|
- "$array" is like "$@"
|
|
- ${array[index]} is used to reference array element `index', where
|
|
`index' can be an arbitrary arithmetic expression
|
|
- two special values for `index': * and @ expand to all
|
|
elements of the array, just like $* and $@. Quoting
|
|
behavior is the same, too
|
|
- using a subscript is an error if a variable has not been declared
|
|
as an array (is this wise?)
|
|
- ${#variable}, if `variable' is an array, expands to the number of
|
|
elements in the array
|
|
- ${#variable[n]} expands to the length of variable[n]. n
|
|
may be an arbitrary arithmetic expression
|
|
- ${#variable[*]} and ${#variable[@]} expand to the number of
|
|
elements in the array
|
|
|
|
OPEN QUESTIONS
|
|
- should we allow them to be exported? Ksh does not, but rc does
|