read -r "job$i" < ...
Это должно работать, если i=3
, то read
должно установить job3
.
Однако ваши циклы выглядят немного не так:
for((i=0; i < Counter; i++)); do
while read -r Parmfilesjobid; do
IFS=$'\n' read -d '' -r -a "job$i" < ${Parmfilesjobid[$i]}
while read
поместит только одно значение в Parmfilesjobid
, так что, например. ${Parmfilesjobid[1]}
будет удален. (Конечно, скалярный доступ, такой как $var
, совпадает с ${var[0]}
, поэтому, если вы ранее установили Parmfilesjobid
как массив, у вас могут быть значения и с другими индексами, но вы не используете значение из read
, за исключением случаев, когда i=0
.
Вы также используете Parmfilesjobid
как входные данные для цикла while read...
и как переменную, используемую read
, которая немного сбивает с толку и означает, что последние итерации for
дадут while
последний Parmfilesjobid
, прочитанный в предыдущей итерации в качестве входных данных. Это кажется несколько странным.
Поскольку я не вижу вашего ввода, я не совсем уверен, что вы хотите здесь сделать. Но я подозреваю, что что-то вроде этого может быть ближе:
i=0
while read -r filename ; do
IFS=$'\n' read -d '' -r -a "job$i" < "$filename"
let i++
done <<< "${var_with_filenames}"
UUID ни о чем не говорит. У меня есть небольшой сервер с восемью в нем идентичные диски HGST -, так КАКОЙ из них я смотрю? Слишком большая вероятность ошибок при использовании UUID.
Самый простой способ -— присвоить дискам одинаковые метки. когда вы форматируете их, а затем используете fstab для их монтирования по метке одинаковые точки на всех ваших машинах. Тогда у вас нет возиться с sda1, sda2, sdb1 и т. д. для большинства практических целей. своего рода операция.
Некоторые системные инструменты требуют «/dev/[something]» вместо использования точка монтирования... но загляните в /dev и вы увидите "/dev/disk/by -label" там, и вы обычно можете использовать это вместо «sda1» или чего-то еще.