Я хочу написать вспомогательную функцию для моих сценариев Bash, которая выводит установленные переменные и их значения по умолчанию перед выполнением остальной части сценария.
Я могу делать то, что хочу, без функции:
host="postgres.database.com"
port="5432"
username="dbadmin"
dbname="test"
# Code below needs to be a function
for argument in host port username dbname
do
echo "$argument: ${!argument}"
done
Вывод:
host: postgres.database.com
port: 5432
username: dbadmin
dbname: test
Однако я хотел бы повторно использовать этот код в других сценариях, например:
print_arguments $host $port $username $dbname
У меня естьискал различные способы печати имени переменной, но не ее значения, однако ни один из них не помог мне.Как вы можете видеть ниже, я пытался использовать расширение параметров оболочки и косвенную переменную:
print_arguments() {
for argument in "$@"
do
echo "${!argument*}" "$argument"
echo "${argument@A}" "$argument"
done
}
Результаты обычно выглядят так:
argument postgres.database.com
argument 5432
argument dbadmin
argument test
Где argument
- переменнаяимя, используемое в цикле for
.Я хочу, чтобы он мог разрешить исходное имя переменной, например, host
или port
.