Ваши входные файлы, вероятно, имеют окончания строки CR-NL, поэтому $ res1 возвращает курсор в начало строки, а затем $ res2 перезаписывает его. Запустите свои файлы через dos2unix
, чтобы исправить это.
Если ваш второй позиционный параметр 4
, вы можете передать его так:
lvresize -r -L "$2G" "$opt"
Однако я бы рекомендовал использовать фигурные скобки только для чистоты
lvresize -r -L "${2}G" "$opt"
Неясно, как устанавливается opt
, но я предполагаю, что вы об этом позаботились.
Когда вы пишете $($2)
, вы выполняете подстановку команд , поэтому он пытается выполнить команду с именем 4
, которая, вероятно, не существует.
Фигурные скобки обычно требуются для других типов параметров в этой ситуации, поскольку они предотвращают рассмотрение любого замыкающего смежного текста как части имени переменной.
Например:
$ var=good
$ varg=bad
$ echo "$varg"
bad
$ echo "${var}g"
goodg