如何使用Bash函数遍历给定参数以打印参数名称和值?

时间:2019-06-04 20:55:13

标签: bash

我想在执行脚本的其余部分之前为我的Bash脚本编写一个帮助函数,以打印出所设置的变量及其默认值。

我不需要功能就可以做我想做的事

transaction_bottom.replace(R.id.bottomFragment,infoFragment);
transaction_bottom.commit();

输出为:

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

我已经搜索了各种打印变量名的方法,但没有找到它的值,但是似乎没有一种对我有用。如您在下面看到的,我尝试使用shell参数扩展和变量间接寻址:

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循环中使用的变量名。我想使其能够解析为原始变量名称,例如forhost

1 个答案:

答案 0 :(得分:3)

将变量名称而不是其传递给print_arguments

print_arguments host port username dbname

然后循环播放您的上层作品。

print_arguments() {
    for argument in "$@"
    do
        echo "$argument: ${!argument}"
    done
}