【发布时间】:2021-02-14 03:30:09
【问题描述】:
在 BASH 中,
我正在尝试创建一个将数字减去 2 的 for 循环
(免得说 number=8 ,所以我想打印 6, ,4 , 2 )
这个语法有什么问题?
for (( $number; $number>= 0;$number --2));
do
echo "$number"
done
`
谢谢
【问题讨论】:
在 BASH 中,
我正在尝试创建一个将数字减去 2 的 for 循环
(免得说 number=8 ,所以我想打印 6, ,4 , 2 )
这个语法有什么问题?
for (( $number; $number>= 0;$number --2));
do
echo "$number"
done
`
谢谢
【问题讨论】:
我建议:
#!/bin/bash
number=8
dec=2
for ((i=$number-$dec; i>0; i=$i-$dec)); do
echo "$i"
done
输出:
6 4 2【讨论】:
正确的语法是:
for (( number=8; number>= 0; number=number-2))
do
echo "$number"
done
输出:
8
6
4
2
0
但如果您只想要 6、4、2,则需要更改范围:
# here v v and here
for (( number=6; number>=2; number=number-2))
...
另一种语法是:
$ for number in {6..2..2}
do
echo "$number"
done
【讨论】:
当你想保存写 ((number=number-2)) 的字符时,你可以这样做
for (( number=8; number>0; number-=2)); do
echo "$number"
done
注意上下文,它可能会出错:
number=8
while (( number-=2 && number>0 )); do # Example of Wrong use
echo "$number"
done
对于此解决方案,您需要额外的括号
number=8
while (( ((number-=2)) && number>0 )); do
echo "$number"
done
这些括号使它很容易出错,所以不要使用它。我赞成@Cyrus 的解决方案。
【讨论】: