LINUX.ORG.RU

Bash не сбрасывается значение перменной

 , ,


0

1

Добрый день, не могу разобраться почему при запуске цикла с последующим запуском игнорируется запуск переменной $dd_ssd и скрипт просто считывает значение предыдущей переменной?

Пример: Запускаю скрипт, в условие проверяется скорость диска. Далее когда новый цикл запускается в условие предыдущее значение по прежнему почему-то и команда что в переменной $dd_ssd не выполняется

#!/bin/bash
service supervisord stop
service mysql stop
date_ssd=$(date '+%d-%m-%Y_%H-%M-%S')
summa=0
dd_ssd=`sync; dd if=/dev/zero of=/tmp/tmp bs=512k count=20k |& awk '/скопировано/ {print $8 " "  $9}'`
for ((;;))
do
sleep 10
summa=$(($summa+10))
echo "Записано на диск $summa ГБ" >> result.log
#write_ssd=$($dd_ssd)
#$write_ssd
if [[ $dd_ssd = *"MB/c"* ]]; then
 echo "$dd_ssd" > test_ssd.log
 echo "===============START TEST $date_ssd=================" >> result.log
 echo "Записываем 10 гигабайт!. WRITE..."
 echo "Скорость в мегабайтах" >> result.log
 awk_ssd=`awk '{print $1}' test_ssd.log`
 echo "$awk_ssd"
 if [[ $awk_ssd -ge "70" ]]; then
   echo "Скорость выше 70 мб/сек = $awk_ssd" >> result.log
   echo "Состояние диска в % $(awk "BEGIN { print 100 - ($(($(smartctl -x /dev/sda | awk '/241 Total_LBAs_Written/ {print $8}') * 32 / 1024 / 1024 ))*0.96)}")" >> result.log
   else echo "Скорость ниже 70 мб/сек ERROR!!!" >> result.log
   fi
else
 echo "Скорость диска больше 1 Гбит/сек!" >> result.log
 echo "Состояние диска в % $(awk "BEGIN { print 100 - ($(($(smartctl -x /dev/sda | awk '/241 Total_LBAs_Written/ {print $8}') * 32 / 1024 / 1024 ))*0.96)}")" >> result.log
fi
echo "=============END TEST $date_ssd========" >> result.log
done
echo "FINISH. Скорость SSD менее 70 мбит/сек!" >> result.log
exit 0


Я ничего не понял, но dd не в цикле, т.е. запускается один раз

dd_ssd=`sync; dd if=/dev/zero of=/tmp/tmp bs=512k count=20k |& awk '/скопировано/ {print $8 " "  $9}'`
for ((;;))

кстати в sh/bash бесконечный цикл чаще всего пишут так:

while :; do
...
done
futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)