linux - bash - 使用 int 变量作为引用传递给函数的位置参数的索引

标签 linux bash shell variables

我想使用一个变量作为索引值来引用传递给脚本的位置变量,例如:

x=101
y=201
z=301

foo(){

    i=0;
    (( i+=1 )); # i=1
    echo "${$i}"; # parameter 1
    (( i+=1 )); # i=2
    echo "${$i}"; # parameter 2
    (( i+=1 )); # i=3
    echo "${$i}"; # parameter 3
}

foo x y z

输出:

101
201
301

数组和循环在这种情况下无济于事,我需要一个简单的方法来递增一个 int 变量并使用这个值作为索引来检索传递的方法参数。

建议?

最佳答案

我相信你需要在这里进行间接变量扩展:

x=101
y=201
z=301

foo() {
   local i
   local v
   for ((i=1; i<=3; i++ )); do
     v="${!i}" # will get x, y, z
     echo "${!v}" # will get values of $x, $y, $z
   done
}

然后称它为:

foo x y z

101
201
301

关于linux - bash - 使用 int 变量作为引用传递给函数的位置参数的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709133/

相关文章:

linux - cassandra如何能够通过硬链接(hard link)执行快照?

c - gdb print 或 stack alloc 有什么问题?

macos - 如何修复在终端中显示 Android 主机名的 MacBook?

regex - 如何使用文件动态指定模式并根据该目录中的模式获取文件?

ruby 脚本特定的 gemset backick

linux - 当运行带循环的 shell 脚本时,操作会停止

linux - 服务器修补电子邮件通知 Linux 脚本

c - 将 STDOUT 和 STDERR 重定向到 C 中的套接字?

shell - 如何在 OpenEmbedded BitBake 配方中递归安装目录结构?

c# - 在 Linux 上查看 dotnetcore 2 自包含应用程序的内存使用情况统计信息