#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# these should produce the same results
a=(aa bb)
set -- aa bb

IFS=+

recho ${a[@]} 
recho ${a[@]:0} 

recho $@
recho ${@:1} 

A=${a[*]} B=${a[*]:0}
recho $* ${*:1}
recho ${a[*]} ${a[*]:0}
recho "$A" "$B"
recho $A $B

unset A B

recho ${@/a/x} 
recho ${a[@]/a/x} 
recho "${@/a/x}"
recho "${a[@]/a/x}"

recho ${*/a/x} 
recho ${a[*]/a/x} 
recho "${*/a/x}"
recho "${a[*]/a/x}"

A=${*/a/x}
B=${a[*]/a/x}

recho "$A" "$B"

unset A B
declare -A A
A[0]=aa
A[1]=bb

recho ${A[@]/a/x}
recho "${A[@]/a/x}"
recho ${A[*]/a/x}
recho "${A[*]/a/x}"

unset A
IFS=

recho ${@/a/x}
recho ${a[@]/a/x}
recho "${@/a/x}"
recho "${a[@]/a/x}"

recho ${*/a/x}
recho ${a[*]/a/x}
recho "${*/a/x}"
recho "${a[*]/a/x}"

A=${*/a/x}
B=${a[*]/a/x}

recho "$A" "$B"

unset A B
declare -A A
A[0]=aa
A[1]=bb

recho ${A[@]/a/x}  
recho "${A[@]/a/x}" 
recho ${A[*]/a/x}   
recho "${A[*]/a/x}"

unset A

IFS=+

recho ${a[@]}
recho ${a[@],,} 
recho "${a[@]}"
recho "${a[@],,}"

A=${a[*]} B=${a[*],,}
recho $* ${*,,}
recho ${a[*]} ${a[*],,}
recho "${a[*]}" "${a[*],,}"
recho "$A" "$B"
recho $A $B

unset A B
declare -A A
A[0]=aa
A[1]=bb

recho ${A[@],,}
recho "${A[@],,}"
recho ${A[*],,}
recho "${A[*],,}"

unset A

recho ${a[@]#?}
recho ${@#?}

A=${a[*]#?} B=${a[*]#?}
recho ${*#?} ${a[*]#?}
recho "$A" "$B"
recho $A $B

unset A B
declare -A A
A[0]=aa
A[1]=bb

recho ${A[@]#?}  
recho "${A[@]#?}"   
recho ${A[*]#?}  
recho "${A[*]#?}" 
