Bash 使用大括号展开创建名称,其中一些名称必须重复一次
我想使用如下命令自动创建URL列表: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
echo www.somewebsite.com/{1,2,3}_{foo,bar}/{1,2,3}
但是我不想要表单中的所有链接
www.somewebsite.com/1_foo/1www.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
版本?