Принятый ответ велик. Тем не менее, @Edison спросил, как сделать то же самое для массивов. Фокус в том, что вы хотите, чтобы ваша переменная держала «[@]», так что массив расширяется с помощью «!». Отметьте эту функцию, чтобы сбрасывать переменные:
$ function dump_variables() {
for var in "$@"; do
echo "$var=${!var}"
done
}
$ STRING="Hello World"
$ ARRAY=("ab" "cd")
$ dump_variables STRING ARRAY ARRAY[@]
Выводится:
STRING=Hello World
ARRAY=ab
ARRAY[@]=ab cd
Если указано только как ARRAY
, отображается первый элемент, так как это расширилось !
. Предоставляя формат ARRAY[@]
, вы получаете массив и все его значения расширяются.