【发布时间】:2019-12-25 19:17:12
【问题描述】:
使用两个替代开始创建 bash for 循环。我想根据条件遍历范围内的所有数字或数组中的所有元素。以下非正统代码显示了示例:
#!/bin/bash
FROMVAL=1
TOVAL=5
VALARR=(1 3 5)
ISCONSEQ=1
if (( ISCONSEQ == 1 )); then
for (( counter=$FROMVAL; counter<=$TOVAL; counter++ ))
else
for counter in "${VALARR[@]}"
fi
do
echo $counter
done
显然,这不起作用,也不是很漂亮。有没有一种 bash 方法可以做到这一点,或者我应该创建两个 for 循环并根据ISCONSEQ 的内容只执行一个循环?或者我应该对这两种情况都使用for...in 循环并简单地将我的序列的值分配给数组?
此代码确实有效,但仅依赖于数组:
if (( ISCONSEQ == 1 )); then
VALARR=($(seq $FROMVAL 1 $TOVAL))
fi
for counter in "${VALARR[@]}"
do
echo $counter
done
【问题讨论】:
-
是的 - 只有两个 for 循环。很简单。
标签: bash for-loop conditional-statements