Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.0k views
in Technique[技术] by (71.8m points)

shell - Let bash loop over unknown number of variables

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...