bash - bash for 循环中的意外循环行为
问题描述
为什么这段代码不执行 bash 中的 for 循环,而是打印它应该循环的内容?如何执行这样的 for 循环?
read N R
for i in {0..$[(N-1)*R]..$R};do
echo $i;done
是的,代码看起来很糟糕,但它是为了最少数量的字符代码挑战。
解决方案
动态生成所需范围的一种想法:
read N R
for i in $(seq 0 ${R} $(( (N-1)*R )) )
do
echo $i
done
并减少到最少的字符数:
read N R;for i in $(seq 0 $R $((N*R-R)));do echo $i;done
虽然,一般来说,我可能会选择类似的东西:
$ cat ezrah
read N R
for (( i=0 ; i<= (N-1)*R ; i=i+R ))
do
echo $i
done
几个示例运行:
$ ezrah
3 4
0
4
8
$ ezrah
6 3
0
3
6
9
12
15
推荐阅读
- python - 在指定数量的列中,找出每行中具有前 3 个最大值的列
- scala - Akka:Websocket 处理程序失败,无法订阅关闭的发布者
- javascript - 如何从带有变量的文件中选择特定的导出?
- java - 如何使用 OpenAPI4J 解析器以编程方式创建 OpenAPI 模式组件?
- c# - 由自定义属性使用 - IDE0051:删除未使用的私有成员
- excel - Excel Power 查询逻辑使用逻辑获取未出现的数据
- html - 使用 css 旋转的文本未正确对齐
- python - 如何让网页仅从 html 子集中抓取链接
- javascript - 从单击的特定按钮获取ID?
- php - 使用codeigniter根据级别创建动态菜单