Я пытаюсь понять, возможно ли создать набор переменных, пронумерованных на основе другой переменной (используя eval) в цикле, а затем вызвать ее до завершения цикла.
В качестве примера я написал скрипт с именем question (первая команда показывает содержимое переменной $tab)
(23:32:12\[[email protected])
[~/bin]$ listQpsk 40|grep -w [1-4]
40 SMANHUBAQPSK1 1 1344 1195 88
40 SMANHUBAQPSK1 2 1668 1470 88
40 SMANHUBAQPSK1 3 1881 1539 81
40 SMANHUBAQPSK1 4 1686 1409 83
(23:18:42\[[email protected])
[~/bin]$ cat question
#!/usr/bin/bash
tab=`listQpsk 40|grep -w [1-4]`
seq=1
num=4
until [[ $seq -gt $num ]];do
eval count$seq=`echo "$tab"|grep -w $seq|awk '{print $5}'`
seq=$(($seq+1))
done
echo $count1
echo $count2
echo $count3
echo $count4
Когда я запускаю это, я получаю
(23:32:23\[[email protected])
[~/bin]$ ./question
1195
1471
1538
1409
Это именно то, что я ожидал, но есть ли способ переместить эхо-команды внутри цикла until, чтобы часть цикла повторяла значение только что созданной переменной. Что-то типа:
until [[ $seq -gt $num ]];do
eval count$seq=`echo "$tab"|grep -w $seq|awk '{print $5}'`
seq=$(($seq+1))
echo "$count$seq"
done
PS: Извините, если мое форматирование отключено... первый раз публикую здесь, и я знаю только уценку из Reddit.