我知道如何在 bash 中执行每次增加 1 的循环,但假设我的范围是 1 到 773,并且我想从循环中输出一个范围,以便在每次迭代中获得两个变量。第一个为 1,第二个为 19。在第二次迭代中,第一个为 20,第二个为 39。
我一直在玩类似的东西:
for start in {1..773}
do
start=$(($start+20))
end=$(($start+20))
echo $start ##
echo $end
done
期望的循环结果:
1. $start = 1 and $end = 19
2. $start = 20 and $end = 39
3. $start = 40 and $end = 59
etc
但这是不对的。我想将这两个变量输出到一系列脚本以使 R 运行得更快,因此如果非 bash(例如 awk)解决方案更容易,那么如果简单的 > 将向其发送文件,那也很酷。
Thanks!
您的要求并不完全清楚,但您正在重复使用变量名称。
如果我这样做:
for index in {1..773}
do
start=$(($index+20))
end=$(($start+20))
echo $start ##
echo $end
done
我得到的结果与您想要的结果类似。观察我如何将循环变量从开始重命名为索引。
PS:如果你想改变循环中的步长(又名“增量”),只需这样做:
#!/bin/bash
for i in {0..10..2}
do
echo "Welcome $i times"
done
这将以 2 为步长递增,您可能希望在此处使用 20。那会给你1, 21, 41, ...
作为价值。看http://www.cyberciti.biz/faq/bash-for-loop/ http://www.cyberciti.biz/faq/bash-for-loop/更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)