让bash在未知数量的变量上循环
我有一个文件,其中定义了一组变量。可能是一个、四个或二十个。它们的名称有让bash在未知数量的变量上循环,bash,shell,Bash,Shell,我有一个文件,其中定义了一组变量。可能是一个、四个或二十个。它们的名称有ipt_rss和bhd_rss。让我们调用这些变量var\u 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 如何实现这一点?如果变量都以公共前缀开头,则可
ipt_rss
和bhd_rss
。让我们调用这些变量var\u 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
如何实现这一点?如果变量都以公共前缀开头,则可以迭代所有此类变量名,并对结果使用间接变量展开:
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 ${!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
或