or vname[subscript]=value [ vname[subscript]=value ] ... Note that no space is allowed before or after the =. Attributes assigned by the typeset special built-in command apply to all elements of the array.  An array element can be a simple variable, a compound variable or an array variable.  An element of an indexed array can be either an indexed array or an associative array.  An element of an associative array can also be either.  To refer to an array element that is part of an array element, concatenate the subscript in brackets.  For example, to refer to the foobar element of an associative array that is defined as the third element of the indexed array, use ${vname[3][foobar]} A nameref is a variable that is a reference to another variable.  A nameref is created with the -n attribute of typeset.  The value of the variable at the time of the typeset command becomes the variable that will be referenced whenever the nameref variable is used.  The name of a nameref cannot contain a ..  When a variable or function name contains a ., and the portion of the name up to the first . matches the name of a nameref, the variable referred to is obtained by replacing the nameref portion with the name of the variable referenced by the nameref.  If a nameref is used as the index of a for loop, a name reference is established for each item in the list.  A nameref provides a convenient way to refer to the variable inside a function whose name is passed as an argument to a function.  For example, if the name of a variable is passed as the first argument to a function, the command typeset -n var=$1 inside the function causes references and assignments to var to be references and assignments to the variable whose name has been passed to the function. If any of the floating point attributes, -E, -F, or -X, or the integer attribute, -i, is set for vname, then the value is subject to arithmetic evaluation as described below. Positional parameters, parameters denoted by a number, may be assigned values with the set special built-in command.  Parameter $0 is set from argument zero when the shell is invoked. The character $ is used to introduce substitutable parameters. ${parameter} The shell reads all the characters from ${ to the matching } as part of the same word even if it contains braces or metacharacters.  The value, if any, of the parameter is substituted.  The braces are required when parameter is followed by a letter, digit, or underscore that is not to be interpreted as part of its name, when the variable name contains a ..  The braces are also required when a variable is subscripted unless it is part of an Arithmetic Expression or a Conditional Expression.  If parameter is one or more digits then it is a positional parameter. A positional parameter of more than one digit must be enclosed in braces.  If parameter is * or @, then all the positional parameters, starting with $1, are substituted (separated by a field separator character).  If an array vname with last subscript * @, or for index arrays of the form sub1 ..  sub2.  is used, then the value for each of the elements between sub1 and sub2 inclusive (or all elements for * and @) is substituted, separated by the first character of the value of IFS. ${#parameter} If parameter is * or @, the number of positional parameters is substituted.  Otherwise, the length of the value of the parameter is substituted. ${#vname[*]} ${#vname[@]} The number of elements in the array vname is substituted.