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

Bash 使用大括号展开创建名称,其中一些名称必须重复一次,bash,brace-expansion,Bash,Brace Expansion,我想使用如下命令自动创建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.s

我想使用如下命令自动创建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

也许这对你更合适:

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'
} 

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

{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'
} 

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

是的,应该这样做,尽管
{foo,bar}
没有按预期工作,它们没有扩展到@ffledgeling的答案,您应该将
echo
替换为
printf“%s\n”
以避免在每次迭代时将两个展开的字符串放在同一行。@D1X它们为我展开。你用的是什么外壳?你得到的输出是什么?是的,应该这样做,虽然
{foo,bar}
没有按预期工作,但它们没有展开@ffledgeling的答案加上一个,你应该用
printf“%s\n”
替换
echo
,以避免每次迭代都将两个展开的字符串放在同一行。@D1X它们为我展开。你用的是什么外壳?您得到的输出是什么?您是否希望数字相同(例如,两个位置的
{1,2,3}
,或者一个位置的
{1,3}
,另一个位置的
{3,5}
)。我认为你应该更详细地说明你的预期产出。您是否希望每个匹配号码都有
foo
bar
版本?您是否希望号码相同(例如,
{1,2,3}
在两个位置,或者
{1,3}
在一个位置,而
{3,5}
在另一个位置)。我认为你应该更详细地说明你的预期产出。您是否希望每个匹配号码都有
foo
bar
版本?