Let bash loop over unknown number of variables

半城伤御伤魂 提交于 2021-01-28 23:10:43

问题


I have a file where a bunch of variables are defined. It could be one, four or twenty. They have names such as ipt_rss and bhd_rss. Let's call these variables var_i

Now, I'd like to let bash loop over these variables like this:

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

How can I accomplish that?


回答1:


If the variables all begin with a common prefix, you can iterate over all such variable names and use indirect variable expansion on the results:

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

Otherwise, the best you can do is explicitly define an array of variable names, or hard-code the list of names:

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

or

for var in ipt_rss bhd_rss; do


来源:https://stackoverflow.com/questions/26367263/let-bash-loop-over-unknown-number-of-variables

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!