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

胜利鞋

我想为我的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我想使其能够解析为原始变量名称,例如hostport

约翰·库格曼

将变量而不是它们的传递给print_arguments

print_arguments host port username dbname

然后,您拥有的循环开始工作。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用变量的值作为函数的参数名称吗?

如何给类参数名称赋予函数以更改此参数

如何使Chai打印断言的参数名称而不是其值

动态获取函数参数名称和值

在函数中传递参数名称和值

如何使用函数名称和参数作为变量来调用适当的函数?的PHP

函数名称和参数的映射字典

获取函数名称和参数

如何使用argparse参数作为函数名称

如何使用clang LibTooling获取函数指针参数名称?

如何正确获取和打印值以形成给定的URL参数

如何使函数返回传递的参数名称

在Swift中使用函数参数名称

使用函数名称作为参数

如何在TypeScript中为函数参数设置参数名称和类型?

如何使用 Retrofit 为请求的查询字符串提交原始值(无参数名称和值对)?

应用函数名称和参数的函数类型

如何获得AJAX回调函数以使用参数呈现Django url或html模板?

Azure函数:值不能为null。参数名称:来源

ArgumentNullException:值不能为null。参数名称:构造函数

在 R 中的函数中获取参数名称而不是值

当R中缺少参数时,如何调用另一个函数以使用其默认参数?

具有模板函数名称,传递参数和周围返回值的可变参数模板

如何将函数中的参数名称作为列值返回?

函数名称和参数之间的Python方括号:func [...](...)

在TypeScript中获取函数参数名称和类型

隐式提取Scala函数名称和参数

查找和替换函数名称并编辑其参数

C ++如何警告函数声明和定义中的参数名称之间的差异