Я хотел бы сбросить мой массив пользователю, чтобы они могли видеть, как будут выглядеть сопоставления. Я попытался с этим утверждением printf '%s\n' "${cluster_to_endpoint[@]}"
Я пытаюсь сбросить его в моей функции использования ниже, однако я не получаю вывод, который я ожидаю.bash - как сбрасывать все элементы в массиве в пределах использования
Код в процессе:
#!/bin/bash
set -e
usage() {
echo "Usage: $0 -o oldcluster -n newcluster"
printf '%s\n' "${cluster_to_endpoint[@]}"
}
while getopts ":o:n:" opt; do
case $opt in
o) old="$OPTARG";;
n) new="$OPTARG";;
*) usage
exit 1
;;
esac
done
# Mapping
declare -A cluster_to_endpoint=(
[c1]=foobar2-01.us-east-1.my.com
[c2]=foobar2-02.us-east-1.my.com
[c3]=foobar2-03.us-east-1.my.com
[c4]=foobar2-04.us-east-1.my.com)
# Echo info
echo "Source cluster:${cluster_to_endpoint[$old]}"
echo "Target cluster:${cluster_to_endpoint[$new]}"
Выход:
-bash-4.1$ ./tst.sh -h
Usage: ./tst.sh -o oldcluster -n newcluster
Ожидая:
Usage: ./tst.sh -o oldcluster -n newcluster
[c1]=foobar2-01.us-east-1.my.com
[c2]=foobar2-02.us-east-1.my.com
[c3]=foobar2-03.us-east-1.my.com
[c4]=foobar2-04.us-east-1.my.com
У вас будет больше шансов получить ожидаемый результат, если вы создадите массив * до того, как вы попытаетесь его распечатать. – rici