\texttt{"\${\itshape a}[*]"} & \texttt{"\${\itshape a}[1]s\${\itshape a}[2]s...\${\itshape a}[n]"}; separator \texttt{s} is the 1\textsuperscript{st} char of \texttt{\$IFS} (\texttt{space} if unset, empty if null) \\
\texttt{"\$\{{\itshape a}[*]\}"} & \texttt{"\$\{{\itshape a}[1]\}s\$\{{\itshape a}[2]\}s...\$\{{\itshape a}[n]\}"}; separator \texttt{s} is the 1\textsuperscript{st} char of \texttt{\$IFS} (\texttt{space} if unset, empty if null) \\
\texttt{"\$\{\#{\itshape array}[{\itshape sub}]\}"} & length of \texttt{"\$\{{\itshape array}[{\itshape sub}]\}"} \\
\texttt{\$\{\#{\itshape array}[{\itshape sub}]\}} & length of \texttt{\$\{{\itshape array}[{\itshape sub}]\}} \\
\texttt{\$\{\#{\itshape a}[@]\}}, \texttt{\$\{\#{\itshape a}[*]\}} & number of elements in \texttt{\itshape{a}}. \\ %*
\texttt{\$\{!{\itshape a}[@]\}}, \texttt{\$\{!{\itshape a}[*]\}} & like \texttt{\$\{{\itshape a}[@]\}}, but with the \textit{subscripts} instead of the values \\
%\texttt{"\$\{!{\itshape a}[*]\}"} & like \texttt{"\$\{{\itshape a}[*]\}"}, but with the subscripts \\
%\texttt{"\$\{!{\itshape a}[@]\}"} & like \texttt{"\$\{{\itshape a}[@]\}"}, but with the subscripts \\
\end{tabular}
Destruction
-----------
\begin{tabular}{p{3.0cm}p{5.5cm}}
\textbf{expression} & \textbf{value} \\
\texttt{unset {\itshape a}[{\itshape sub}]} & removes the element at index or key \texttt{{\itshape sub}} from array \texttt{\itshape a}. \\
\texttt{unset {\itshape a}} & removes the array \texttt{\itshape a}. \\
\texttt{unset {\itshape a}[@]} & removes the array \texttt{\itshape a}. \\
\texttt{unset {\itshape a}[*]} & removes the array \texttt{\itshape a}. \\
\end{tabular}
Functions
=========
...
...
@@ -625,8 +654,7 @@ TODO
*`eval` (and maybe `expr`)
*`declare`
* namerefs
* arrays
* namerefs (`declare -n`)
* idioms: read x y < <(...) (use process substitution to set variables)
* f -o a1 a2 -- you can pass switches and options to functions