Этот скрипт, кажется, дает противоречивые результаты.Например, когда оператор if
видит свою первую строку, которая больше, он работает нормально.Но иногда более поздние строки большего размера полностью игнорируются:
ITEM[0]="XX"
ITEM[1]="XXXXXXX"
ITEM[2]="X"
ITEM[3]="XXXXXXXXXXXX"
ITEM[4]="XXXX"
SETPOINT=0
for i in "${!ITEM[@]}"; do
STRING="${ITEM[$i]}"
LENGTH=${#STRING}
echo "String length = $LENGTH"
if [ $LENGTH \> $SETPOINT ]; then
SETPOINT=$LENGTH
echo "Setpoint was updated to $SETPOINT"
fi
echo "Loop again"
done
echo "Final setpoint = $SETPOINT"
Вот пример выходных данных:
String length = 2
Setpoint was updated to 2
Loop again
String length = 7
Setpoint was updated to 7
Loop again
String length = 1
Loop again
String length = 12 <--- Why didn't it catch this one?????
Loop again
String length = 4
Loop again
Final setpoint = 7
Кроме того, изначально я пытался выполнить расширение переменной и строкусчитая внутри оператора if
, поэтому мне не нужно было создавать "STRING" и "LENGTH", но я не мог понять синтаксис для расширения переменной массива и одновременного подсчета строки внутри if
,Так что, если вы тоже подумали об этом, чтобы сократить код, это было бы удивительно!
Спасибо!