LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

sfdisk и parted я пробовал - читай выше

А вот тут люди создают нормально из скрипта:

Сможешь адаптировать?

И на всякий случай: parted -m "$dsk" print

// и чем скрипт-то не понравился?..

Всем.

Во-первых, когда пишешь скрипт, нельзя использовать команды, которые предполагают интерактивный ввод. Это потому, что интерактивный ввод - для мясных людей: программа может запросто сбрасывать буффер перед вводом, при очредом арейде формат ввода/вывода может леко поменяться и т. п. Для бездушных машин и их скриптов есть параметры командной строки (ну и разные API). Поэтому, перед использованием fdisk люди как правило ищут аналог, который позволяет делать то же, но через параметры коммандной строки. И такое есть: parted. В очень редких случаях, когда альтернативы нет, используют expect.

Во-вторых, твой скрипт вознамерился делать достаточно опасные вещи, а меж тем в нём нет совсем обработки ошибок. Ты или senior 100500 левела, или пока ещё не научен жизнью. Ладно, люди ленивые создания, но поставь хотябы set -e в начало скрипта.

Зачем sudo перед fdisk? sudo вообще в скриптах нельзя ипользовать. Во-первых он предполагает интерактивный ввод. Во-вторых, даже если это обойти, если скрипт требует рутовых привелегий , то пользователь должен сам скрипт запустить от рута. И тебя не смущает, что sudo есть перед fdisk, но отсутствует, например, перед mount и mkfs.ext4?

sync - зачем? reboot - точно нужен? fdisk и parted делают тебе готовые для использования разделы.

Далее, есть вещи, которые у опытных людей просто на автомате. Например, заключать все переменные, да и все строки в двойные кавычки. Использовать конструкцию вида $( ... ) вместо обратных кавычек. Почему ты используешь sh-вариант условий [ ... ] вместо bash [[ ... ]]? В grep в скриптах лучше обозначать начало и конец паттерна, то есть grep ' LIVEBOOT_HOME ' в твём случае, если я всё правильно понял в твоём варианте (я уже молчу о том, что как правило всё можно найти намного проще через /dev; если это метка, то dev/disk/by-label/).

Исправление Kroz, :

sfdisk и parted я пробовал - читай выше

А вот тут люди создают нормально из скрипта:

Сможешь адаптировать?

И на всякий случай: parted -m "$dsk" print

// и чем скрипт-то не понравился?..

Всем.

Во-первых, когда пишешь скрипт, нельзя использовать команды, которые предполагают интерактивный ввод. Это потому, что интерактивный ввод - для мясных людей: программа может запросто сбрасывать буффр перед вводом, при очредом арейде формат ввода/вывода может леко поменяться и т. п. Для бездушных машин и их скриптов есть параметры командной строки (ну и разные API). Поэтому, перед использованием fdisk люди как правило ищут аналог, который позволяет делать то же, но через параметры коммандной строки. И такое есть: parted. В очень редких случаях, когда альтернативы нет, используют expect.

Во-вторых, твой скрипт вознамерился делать достаточно опасные вещи, а меж тем в нём нет совсем обработки ошибок. Ты или senior 100500 левела, или пока ещё не научен жизнью. Ладно, люди ленивые создания, но поставь хотябы set -e в начало скрипта.

Зачем sudo перед fdisk? sudo вообще в скриптах нельзя ипользовать. Во-первых он предполагает интерактивный ввод. Во-вторых, даже если это обойти, если скрипт требует рутовых привелегий , то пользователь должен сам скрипт запустить от рута. И тебя не смущает, что sudo есть перед fdisk, но отсутствует, например, перед mount и mkfs.ext4?

sync - зачем? reboot - точно нужен? fdisk и parted делают тебе готовые для использования разделы.

Далее, есть вещи, которые у опытных людей просто на автомате. Например, заключать все переменные, да и все строки в двойные кавычки. Использовать конструкцию вида $( ... ) вместо обратных кавычек. Почему ты используешь sh-вариант условий [ ... ] вместо bash [[ ... ]]? В grep в скриптах лучше обозначать начало и конец паттерна, то есть grep ' LIVEBOOT_HOME ' в твём случае, если я всё правильно понял в твоём варианте (я уже молчу о том, что как правило всё можно найти намного проще через /dev; если это метка, то dev/disk/by-label/).

Исходная версия Kroz, :

sfdisk и parted я пробовал - читай выше

А вот тут люди создают нормально из скрипта:

Сможешь адаптировать?

И на всякий случай: parted -m "$dsk" print

// и чем скрипт-то не понравился?..

Всем.

Во-первых, когда пишешь скрипт, нельзя использовать команды, которые предполагают интерактивный ввод. Это потому, что интерактивный ввод - для мясных людей. А для железных машин есть параметры командной строки, ну и разные API. Поэтому, перед использованием fdisk люди как правило ищут аналог, который позволяет делать то же, но через параметры коммандной строки. И такое есть: parted. В очень редких случаях, когда альтернативы нет, используют expect.

Во-вторых, твой скрипт вознамерился делать достаточно опасные вещи, а меж тем в нём нет совсем обработки ошибок. Ты или senior 100500 левела, или пока ещё не научен жизнью. Ладно, люди ленивые создания, но поставь хотябы set -e в начало скрипта.

Зачем sudo перед fdisk? sudo вообще в скриптах нельзя ипользовать. Во-первых он предполагает интерактивный ввод. Во-вторых, даже если это обойти, если скрипт требует рутовых привелегий , то пользователь должен сам скрипт запустить от рута. И тебя не смущает, что sudo есть перед fdisk, но отсутствует перед mount и mkfs.ext4?

sync - зачем? reboot - точно нужен? fdisk и parted делают тебе готовые для использования разделы.

Далее, есть вещи, которые у опытных людей просто на автомате. Например, заключать все переменные, да и все строки в двойные кавычки. Использовать конструкцию вида $( ... ) вместо обратных кавычек. Почему ты используешь sh-вариант условий [ ... ] вместо bash [[ ... ]]? В grep в скриптах лучше обозначать начало и конец паттерна, то есть grep ' LIVEBOOT_HOME ' в твём случае, если я всё правильно понял в твоём варианте (я уже молчу о том, что как правило всё можно найти намного проще через /dev; если это метка, то dev/disk/by-label/).