我有一个文件,其中定义了一堆变量。它可能是一,四或二十。它们的名称包括ipt_rss
和bhd_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
我该如何实现?
答案 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