# test cases for array quoting and escaping fixed post bash-3.2-release oIFS="$IFS" a=(a b c) echo ${a[@]} a2=("${a[@]/#/"-iname '"}") recho "${a2[@]}" echo "${dbg-"'hey'"}" echo "${dbg-"hey"}" echo "${dbg-'"'hey}" echo "${dbg-'"hey'}" unset a a2 IFS= a2=(${a[@]/#/"-iname '"}) recho "${a2[@]}" IFS="$oIFS" unset a a2 a=('a b' 'c d' 'e f') recho ${a[@]:1:2} recho "${a[@]:1:2}" IFS= recho ${a[@]:1:2} recho "${a[@]:1:2}" IFS="$oIFS" unset a a2 a=(abc def) # Prevent word splitting #IFS= a2=("${a[@]/#/"-iname '"}") recho "${a2[@]}" eval a2=("${a[@]/#/"-iname '"}") recho "${a2[@]}" a2=("${a[@]/#/-iname \'}") recho "${a2[@]}" eval a2=("${a[@]/#/-iname \'}") recho "${a2[@]}" set -- abc def a2=("${@/#/"-iname '"}") recho "${a2[@]}" eval a2=("${@/#/"-iname '"}") recho "${a2[@]}" unset a a2 IFS= pat=('*.*') case $(ls ${pat[@]} 2>/dev/null) in '') echo '*.* BAD' ;; *) echo '*.* OK' ;; esac IFS="$oIFS" unset a a2 pat IFS= s='abc' set - ${s/b/1 2 3} echo $# echo "$1" IFS="$oIFS" unset s set -- ab cd ef foo="var with spaces" IFS= recho $foo recho "$foo" recho ${foo}"$@" recho ${foo}$@ array=(ab cd ef) recho ${foo}"${array[@]}" recho ${foo}${array[@]} recho $(echo $foo)"$@" recho $(echo $foo)$@ a=('word1 with spaces' 'word2 with spaces') set - ${a[@]/word/element} echo $# recho "$@" recho $@ IFS="$oIFS" unset a a2 array foo