【发布时间】:2021-01-07 19:08:32
【问题描述】:
我正在尝试控制(通过多个IF 语句)Linux 中while 循环中已定义变量的整数范围。
我的 Bash 代码:
#!/bin/bash
pad=3
START=1
END=246
i=${START}
while [ ${i} -le ${END} ];
do
num=$(printf "%0*d\n" $pad ${i})
echo "${num}"
if [ ${num} -lt "36" ];
then
((i = i + 1))
fi
if [ ${num} -ge "36" ] && [ ${num} -le "192" ];
then
((i = i + 3))
fi
if [ ${num} -ge "192" ] && [ ${num} -le "246" ];
then
((i = i + 6))
fi
done
exit 0
预期输出:
001
...
...
...
036
039
042
...
...
...
192
198
204
...
...
...
240
246
终端输出:
001
...
...
...
036
039
042
...
...
...
192
198
201
204
...
...
...
243
246
在满足 IF 条件后,在 192 后和 246 前,${num} 变量仍然增加3,而不是增加6。 p>
【问题讨论】:
-
如果num是192,不应该增加9吗?
-
我没有得到你运行代码时显示的输出。
-
你在寻找类似
printf '%s\n' {1..36} {39..192..3} {198..246..6}的东西吗?
标签: linux bash if-statement while-loop integer