Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让bash在未知数量的变量上循环_Bash_Shell - Fatal编程技术网

让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