start=1; total=0
while [ $start -le 1000 ]; do
[[ $(($start%2)) == 0 ]] && total=$(($total+$start))
start=$(($start+1))
done
echo $total # 250500
start=0; total=0
for i in $(seq $start 2 1000); do
total=$(($total+$i))
done
echo $total # 250500
$ time (start=0; total=0; for i in $(seq $start 2 1000); do total=$(($total+$i)); done; echo $total) real 0m0.016s $ time (start=1; total=0; while [ $start -le 1000 ]; do [[ $(($start%2)) == 0 ]] && total=$(($total+$start)); start=$(($start+1)); done; echo $total) real 0m0.073s
方法一耗時是方法二的 6 倍!
seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST
seq 1000 # 1 2 3 ... 1000 seq 2 1000 # 2 3 4 ... 1000 seq 1 3 10 # 1 4 7 10(起始 1,遞增 3,至 10)
seq -s'#' 1 3 10 1#4#7#10
a=($(seq 1 3 10))
echo ${a[1]} # 4
echo ${a[@]} # 1 4 7 10
seq -s '#' 30 | sed -e 's/[0-9]*//g' ##############################
原理:指定分隔符 #,再以 sed 移除數字,留下連續 #。撰寫分隔線、進度條極為方便。