让bash循环遍历未知数量的变量

时间:2014-10-14 17:59:38

标签: bash shell

我有一个文件,其中定义了一堆变量。它可能是一,四或二十。它们的名称包括ipt_rssbhd_rss。我们将这些变量称为var_i

现在,我想让bash循环遍历这些变量:

for all i in var_i do
    command1 arg command2 arg $var_1 > /some/directory/$var_i.rss
        echo "Success finding $var_i"
done

我该如何实现?

1 个答案:

答案 0 :(得分:4)

如果变量all 开始并带有公共前缀,则可以迭代所有此类变量名称并对结果使用间接变量扩展:

for var in ${!rss_*}; do  # rss_ipt, rss_bhd, etc
    command1 arg command2 arg "${!var}" > "/some/directory/${!var}.rss"
done

否则,您可以做的最好的事情是显式定义变量名称数组,或硬编码名称列表:

vars=( ipt_rss bhd_rss ... )
for var in "${vars[@]}"; do

for var in ipt_rss bhd_rss; do