Как динамически создавать переменные с помощью цикла

Исходя из предоставленных нам данных, я предполагаю следующее:

  • Вы не делали 10-часовую резервную копию системы перед запуском
  • У вас слабое интернет-соединение, и сеанс ssh может быть потерян

Так что в текущей ситуации лучше всего:

  • запустить эхо-запрос на хост, чтобы соединение оставалось активным
  • Подождать 10 часов

В зависимости от результата вы просто:

  • перезагрузите систему, и все в порядке
  • попросите поставщика услуг / DCOps /... перезагрузить хост после того, как они подтвердят, что высокая нагрузка на диски больше не существует.

Если бы вы использовали partedвместо gpartedдля изменения размера, вы могли бы остановить изменение размера, поскольку оно выполняет изменение размера, сначала перемещая последние выделенные блоки, а затем переходит на передний план и обновляет только раздел. стол, если все прошло нормально.

Однако поскольку вы используете графический интерфейс, результаты непредсказуемы , так что сейчас лучше всего подождать...

Примечание:В следующий раз сделайте резервную копию системы, прежде чем делать подобные вещи, и используйте командную строку вместо графического интерфейса, что заставляет вас думать, прежде чем делать....

1
01.07.2021, 13:09
1 ответ

Хотя вы можете делать то, о чем просите, это делает код излишне сложным и трудным для сопровождения. Я бы предложил эту альтернативу:

#!/bin/bash

tArray=( 6 10 20 )

for((i=0; i<${#tArray[@]} -1; i++));
do
  dArray[i]=$((tArray[i+1] - tArray[i]))
done

for((i=0; i<${#dArray[@]}; i++));
do
  echo "${tArray[i+1]} - ${tArray[i]} = ${dArray[i]}"
done

Запуск с возвратом:

$ foo.sh
10 - 6 = 4
20 - 10 = 10

Для справки, вот как бы вы это сделали, используя вашу первоначальную идею:

#!/bin/bash

t0=6
t1=10
t2=20

for i in {0..1}; do
  tVarName1=t${i}
  tVarName2=t$((i+1))
  dVarname=d${i}
  eval "$dVarname=$(( ${!tVarName2} - ${!tVarName1} ))"
done

echo "D0: $d0"
echo "D1: $d1"
2
28.07.2021, 11:21

Теги

Похожие вопросы