Есть вот такой скриптик:
#!/bin/sh
INFO="info"
CPU="cpu"
top -b -d 1 -n 3 | while read line
do
CPU=`expr match "$line" '\(^Cpu.*\)'`
if [ -n "$CPU" ]; then
echo "iteration start: '$INFO' "
INFO=$CPU
echo "iteration end: '$INFO' "
echo
fi;
done
echo "loop end: '$INFO' "
----------------
Запускаем:
./test.sh
iteration start: 'info'
iteration end: 'Cpu(s): 0.0%us, 47.0%sy, 10.7%ni, 42.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration start: 'Cpu(s): 0.0%us, 47.0%sy, 10.7%ni, 42.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration end: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration start: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration end: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
loop end: 'info'
----------------
Вопросы:
- почему после завершения while переменная INFO не изменила своего значения?
- как получить новое значение переменной INFO после завершения while ?