Bash:在“for loop”命令中显示当前循环编号

时间:2015-02-22 16:18:15

标签: bash

bulknomer=(`cat /tmp/bulknomer`)
bulkpesan=`cat /tmp/bulkpesan`
for i in "${bulknomer[@]}"; do
    echo  "send sms $i $bulkpesan"
done

$bulknomer有多个值(+6281 +6282 +6283 +6284)。如何显示当前循环的数量?例如,当它仍然向列表中的数字发送短信时,它在linux终端上显示如下内容:

1. Sending sms to +6281
2. Sending sms to +6282
3. Sending sms to +6283
4. Sending sms to +6284

1 个答案:

答案 0 :(得分:1)

对于从第1个元素到最后一个元素的迭代,你可以这样做:

len=${#bulknomer[@]}
for ((i=0; i < len; i++)); do
    j=$((i+1))
    echo  "($j of $len): send sms ${bulknomer[$i]} $bulkpesan"
done

${#bulknomer[@]}给出数组的长度。并且for ((i=0; i < ${#bulknomer[@]}; i++))是从位置0到length(array)-1的迭代数组。 j=$((i+1))从1变为j

但是对于您的情况,您并不需要创建数组。更好的脚本将是:

#!/bin/bash

bulkpesan=$(</tmp/bulkpesan)
i=1
while read -r line; do
    echo  "$i. send sms $line $bulkpesan"
    ((i++))
done < /tmp/bulknomer