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
答案 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