我想为我的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
我搜索了各种打印变量名的方法,但没有打印其值,但是似乎没有一种方法适合我。如您在下面看到的,我尝试使用shell参数扩展和变量间接寻址:
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
。
将变量名而不是它们的值传递给print_arguments
。
print_arguments host port username dbname
然后,您拥有的循环开始工作。
print_arguments() {
for argument in "$@"
do
echo "$argument: ${!argument}"
done
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句