在sh/bash中将循环中的字符串部分替换为1000次
我有一个sh脚本,如果它被命令在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
/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可能不是合适的工具:)