首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在循环中使用变量名

在循环中使用变量名
EN

Unix & Linux用户
提问于 2020-03-13 11:39:20
回答 1查看 295关注 0票数 0

我对编写脚本非常陌生,只需要收集我的脚本所需的所有信息。

我想迭代一个具有变量名的数组。到目前为止我的剧本:

代码语言:javascript
复制
#!/bin/bash
declare -a bff=("Abnehmen" "Buecher" "Dating" "Dating" "Fitness" "Handy" "Hunde" "Reisen" "Schmuck" "Schwanger" "Uhren")
declare -a dab=("baby" "beauty" "fitness" "haushalt" "heimwekren")
for product in bff dab; do
    echo "${product[@]}" #works fine, it echoes 'bff' in the first loop
        for sub in ${!product[@]}; do
                        echo "${product}/${sub}" #does not work, echoes 'bff/0'
        done
done

输出:

代码语言:javascript
复制
bff
bff/0
dab
dab/0
ddb
ddb/0
dwb
dwb/0
pod
pod/0

我不知道为什么我可以正确地回显变量,但是不能在for循环中使用它。我发现的教程只是关于对varibale变量的回音,但是现在如何在循环中使用它。

有人能在这里帮助我或引导我走正确的方向吗?

我想要的产出是:

代码语言:javascript
复制
bff
bff/Abnehmen
bff/Buecher
bff/Dating
...
dab
dab/baby
dab/beauty
...
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-03-13 11:45:18

通过declare -n refvar=$varname使用变量引用:

代码语言:javascript
复制
#!/bin/bash
declare -a bff=("Abnehmen" "Buecher" "Dating" "Dating" "Fitness" "Handy" "Hunde" "Reisen" "Schmuck" "Schwanger" "Uhren")
declare -a dab=("baby" "beauty" "fitness" "haushalt" "heimwekren")
for product in bff dab; do
    echo "${product[@]}" #works fine, it echoes 'bff' in the first loop
    declare -n parray=$product
        for sub in "${parray[@]}"; do
                        echo "${product}/${sub}" #does not work, echoes 'bff/0'
        done
done

bff
bff/Abnehmen
bff/Buecher
bff/Dating
bff/Dating
bff/Fitness
bff/Handy
bff/Hunde
bff/Reisen
bff/Schmuck
bff/Schwanger
bff/Uhren
dab
dab/baby
dab/beauty
dab/fitness
dab/haushalt
dab/heimwekren
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/572702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档