我有以下循环将打印出Url.com/1.jpg到xx.jpg(我在{1..2}中选择的任意数字)
我需要为多个URL运行此循环,并且不想为每个URL添加新的for循环。
for i in {1..2}; do
echo "'http://url.com/$i.jpg',"
echo "'http://url1.com/$i.jpg'"
done
按原样运行时,我
'http://url.com/1.jpg',
'http://url1.com/1.jpg'
'http://url.com/2.jpg',
'http://url1.com/2.jpg'
将文本显示为以下内容的最简单方法是:
'http://url.com/1.jpg',
'http://url.com/2.jpg',
'http://url1.com/1.jpg'
'http://url1.com/2.jpg'
For,Do Do? 嵌套循环?
答案 0 :(得分:2)
没有(显式)循环! :)
printf "'http://url.com/%d.jpg',\n" {1..2}
printf "'http://url1.com/%d.jpg'\n" {1..2}
或者,通过添加一个循环进一步概括:
urls=(
"'http://url.com/%d.jpg',"
"'http://url1.com/%d.jpg'"
)
for url in "${urls[@]}"; do
printf "$url\n" {1..2}
done
答案 1 :(得分:0)
只需使用两个for循环。
for i in {1..2}; do
echo "'http://url.com/$i.jpg',"
done
for i in {1..2}; do
echo "'http://url1.com/$i.jpg'"
done
答案 2 :(得分:0)
在循环结束时将done
替换为done | sort
。或者将您的网址粘贴在第二个列表中,如本例所示,因为列表通常从左向右展开:
$ echo {a,b}{1..3}
a1 a2 a3 b1 b2 b3
第二种方法的好处是让你在一个命令中执行你的wget或其他命令,比如wget http://{base_url1,base_url2}/image{1..3}.jpg
,并且是我至少每周使用的一般结构。