使用大括号扩展创建名称,其中一些必须重复一次

Using brace expansion to create names, some of them must repeat once

我想使用如下命令自动创建一个 URL 列表:

echo www.somewebsite.com/{1,2,3}_{foo,bar}/{1,2,3}

但我想要

形式的所有链接

www.somewebsite.com/1_foo/1
www.somewebsite.com/1_foo/2 ...

我只想要号码匹配的。也就是我要第一个,因为两个数字都匹配,而不是第二个,因为数字不匹配。

也许这更适合你:

for num in `seq 1 3`
do
  printf "%s\n" www.somewebsite.com/${num}_{foo,bar}/${num}
done

{1..3} 扩展移动到单独的循环中:

for x in {1..3} ; do 
    echo www.somewebsite.com/${x}_{foo,bar}/${x}
done

如果需要使用变量,请使用 C 样式循环:

i=1
j=3     
for ((x=i; x<=j; x++)); {
    echo www.somewebsite.com/${x}_{foo,bar}/${x} | tr ' ' '\n'
} 

任一情况:

www.somewebsite.com/1_foo/1 www.somewebsite.com/1_bar/1
www.somewebsite.com/2_foo/2 www.somewebsite.com/2_bar/2
www.somewebsite.com/3_foo/3 www.somewebsite.com/3_bar/3

如果您希望每行 1 个,请添加 echo www.somewebsite.com/${x}_{foo,bar}/${x} | tr ' ' '\n'