在sh/bash中将循环中的字符串部分替换为1000次

在sh/bash中将循环中的字符串部分替换为1000次,bash,shell,sh,Bash,Shell,Sh,我有一个sh脚本,如果它被命令/textgenerate text0调用,就会生成一个文件text0.txt 现在我需要text0.txt,text1.txt,…,text1000.txt,我该如何编写脚本来实现这一点呢。i、 例如,如何将0部分替换为不断变化的变量,例如1~1000 我知道实现这一点的某种“技巧”,例如,使用MicrosoftExcel生成1000次脚本并将其粘贴到shell中。但是有没有一种简单有效的方法来做到这一点呢 for i in {0..1000}; do ./t

我有一个sh脚本,如果它被命令
/textgenerate text0
调用,就会生成一个文件
text0.txt

现在我需要
text0.txt
text1.txt
,…,
text1000.txt
,我该如何编写脚本来实现这一点呢。i、 例如,如何将
0
部分替换为不断变化的变量,例如1~1000

我知道实现这一点的某种“技巧”,例如,使用MicrosoftExcel生成1000次脚本并将其粘贴到shell中。但是有没有一种简单有效的方法来做到这一点呢

for i in {0..1000}; do
  ./textgenerate "text${i}"
done
这将在[0..1000]范围内循环,并将每个值分配给循环体中的
$i
/textgenerate
将被调用1001次


这将在[0..1000]范围内循环,并将每个值分配给循环体中的
$i
/textgenerate
将被调用1001次。

非常简单,并与GNU parallel并行调用:

parallel ./textgenerate text{}.txt ::: {0..1000}
或者,如果您没有最近的
bash
来扩展
{0..1000}
,您也可以这样做:

seq 0 1000 | parallel ./textgenerate text{}.txt
如果你想看看它会做什么,而不是实际做什么:

如果您想要一个进度条:

parallel --bar  ... as above ...

非常简单且与GNU并行

parallel ./textgenerate text{}.txt ::: {0..1000}
或者,如果您没有最近的
bash
来扩展
{0..1000}
,您也可以这样做:

seq 0 1000 | parallel ./textgenerate text{}.txt
如果你想看看它会做什么,而不是实际做什么:

如果您想要一个进度条:

parallel --bar  ... as above ...

也可以让printf处理循环

. <(printf "./textgenerate text%s\n" {0..1000})

 也可以让printf处理循环

. <(printf "./textgenerate text%s\n" {0..1000})

。显示当前脚本代码显示当前脚本代码布拉沃!非常感谢你!这正是我想要的。很高兴我能帮上忙:)C风格的
for
循环会更好;您不需要一次在内存中创建1000个数字的列表:
for((i=0;i@chepner说得好,谢谢。不过,对于简单的任务,我更喜欢这种语法。事实上,如果我的循环开销会对内存造成负担,那么Bash可能不是合适的工具:)太棒了!非常感谢!正是我想要的。很高兴我能帮上忙:)C风格的
for
循环会更好;您不需要一次在内存中创建1000个数字的列表:
for((i=0;i@chepner说得好,谢谢。不过,对于简单的任务,我更喜欢这种语法。事实上,如果我的循环开销会对内存造成负担,那么Bash可能不是合适的工具:)