#!/bin/bash echo '##### test of array #####' echo 'ARRAY=(one two)' ARRAY=(one two) echo ' ${#ARRAY[@]} is: '${#ARRAY[@]} echo ' ${!ARRAY[@]} is: '${!ARRAY[@]} echo echo ' # Let us push one element at the end' echo ' ELEMENTS=${#ARRAY[@]}' ELEMENTS=${#ARRAY[@]} echo ' ARRAY[$ELEMENTS]=three' ARRAY[$ELEMENTS]=three echo ' ${#ARRAY[@]} is: '${#ARRAY[@]} echo echo ' $ARRAY is: '$ARRAY echo echo ' ${ARRAY[@]}' is: ${ARRAY[@]} echo ' echo ${ARRAY[@]} by "for" loop:' for i in ${ARRAY[@]}; do echo ' '$i done echo echo ' ${ARRAY[*]}' is: ${ARRAY[*]} echo ' echo ${ARRAY[*]} by "for" loop:' for i in ${ARRAY[*]}; do echo ' '$i done echo echo ' "${ARRAY[@]}"' is: "${ARRAY[@]}" echo ' echo "${ARRAY[@]}" by "for" loop:' for i in "${ARRAY[@]}"; do echo ' '$i done echo echo ' "${ARRAY[*]}"' is: "${ARRAY[*]}" echo ' echo "${ARRAY[*]}" by "for" loop:' for i in "${ARRAY[*]}"; do echo ' '$i done echo echo ' ## slice of array ##' echo ' ARRAY=(one two three four five six)' ARRAY=(one two three four five six) echo ' ${ARRAY[@]: 0: 1} is:' ${ARRAY[@]: 0: 1} echo ' ${ARRAY[@]: 2: 3} is:' ${ARRAY[@]: 2: 3} echo ' ${ARRAY[@]: 2} is:' ${ARRAY[@]: 2} echo ' ${ARRAY[@]: -4: 3} is:' ${ARRAY[@]: -4: 3} echo ' ${ARRAY[@]: -4} is:' ${ARRAY[@]: -4} echo ' ${ARRAY[@]: -1} is:' ${ARRAY[@]: -1} echo ' ${ARRAY[((${#ARRAY[@]}-1))]} is:' ${ARRAY[((${#ARRAY[@]}-1))]} echo echo ' ## how to copy an array ##' echo ' ARRAY=(one two three four five six)' echo ' ACOPY=(${ARRAY[@]})' ACOPY=(${ARRAY[@]}) echo ' echo "${ACOPY[@]}" by "for" loop:' for i in "${ACOPY[@]}"; do echo ' '$i done echo echo ' unset ACOPY' unset ACOPY echo " # without re-specifying parentheses it fails even if you use 'declare' builtin" echo ' declare -a ACOPY=${ARRAY[@]}' declare -a ACOPY=${ARRAY[@]} for i in "${ACOPY[@]}"; do echo ' '$i done echo ' echo ${ACOPY[0]}' echo ' '${ACOPY[0]} echo echo ' unset ACOPY' unset ACOPY echo ' # another successfull way to copy an array' echo ' unset ARRAY[3]' unset ARRAY[3] cat <<'EOM' for i in "${!ARRAY[@]}"; do ACOPY[$i]=${ARRAY[$i]} done EOM for i in "${!ARRAY[@]}"; do ACOPY[$i]=${ARRAY[$i]} done echo ' # print values with indices' for i in "${!ACOPY[@]}"; do echo ' '$i' '${ACOPY[$i]} done echo echo ' ## replace functions for array ##' echo ' ARRAY=(one.bin.back two.bin.back three.bin.back)' ARRAY=(one.bin.back two.bin.back three.bin.back) echo ' ${ARRAY[@]/bin/exe} is:' ${ARRAY[@]/bin/exe} echo ' ${ARRAY[@]} is: ' ${ARRAY[@]} echo echo ' ${ARRAY[@]#o*.} is:' ${ARRAY[@]#o*.} echo ' ${ARRAY[@]##o*.} is:' ${ARRAY[@]##o*.} echo ' ${ARRAY[@]%.b*k} is:' ${ARRAY[@]%.b*k} echo ' ${ARRAY[@]%%.b*k} is:' ${ARRAY[@]%%.b*k} echo exit