Files
bash/CWRU/old/array.doc
T
2011-12-03 12:52:47 -05:00

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