Эта строка
arg= 'read';
Поскольку после =
есть пробел, эта строка временно устанавливает переменную arg
в пустую строку, а затем выполняет команду read
, которая считывает данные из стандартного ввода --, поскольку вы не перенаправляете данные в read's stdin, пользователь должен ввести строку текста на терминале. read
сохраняет ввод пользователя в переменную $REPLY
. После этого переменная arg
будет сброшена.
Чтобы присвоить строку 'read'
переменной arg
, нельзя ставить пробелы вокруг=
Эта часть выглядит подозрительно:while $arg; < /dev/tty; do
--почему после $arg стоит точка с запятой?
Во-первых, если можете, сделайте резервную копию enc6
пула -, например. путемzfs send
-добавления его в набор данных в другом пуле.
Если пул в данный момент не используется (, то есть нет открытых файлов ), попробуйте:
zpool export enc6
zpool import -d /dev/disk/by-id/ enc6
В противном случае попробуйте вариант -f
, как предложено в сообщении об ошибке, но используйте символическую ссылку /dev/disk/by-id
вместо /dev/sde1
.
Сначала запустите ls -lF /dev/disk/by-id | grep sde1$
, чтобы определить символическую ссылку. Затем:
zpool replace -f enc6 9081516251822742376 /dev/disk/by-id/XXXXXXXXXXXXX