Ubuntu 18 lvm перенести на другой диск (также lvm) - резервное копирование и восстановление

Utilice el bucle getoptspara establecer variables en función de los parámetros que se pasan. Luego actúe sobre estas variables:

#!/bin/sh

# Defaults:
do_help=0
do_r=0

while getopts "hr" opt; do
    case $opt in
        h) do_help=1 ;;
        r) do_r=1    ;;
        *) echo 'Error in command line parsing' >&2
           exit 1
    esac
done

if [ "$do_help" -eq 1 ]; then
    show_help
    exit
fi

printf 'Default option executed (r=%d)\n' "$do_r"

Opté por dejar que el código saliera correctamente si -hse usa (a menos que show_helpfalle )en lugar de que no -el estado de salida sea cero (pedir ayuda no es un error ).

Ejecutarlo:

$ sh script.sh -r
Default option executed (r=1)
$ sh script.sh
Default option executed (r=0)
$ sh script.sh -h
script.sh[24]: show_help: not found

Esto tiene la ventaja de separar el código de análisis de la línea de comando del resto de la lógica de su secuencia de comandos.

También le permite realizar verificaciones básicas de cordura después del ciclo mientras mantiene el ciclo de análisis breve y simple. Por ejemplo:

# command line parsing loop above here

if [ "$do_help" -eq 1 ] && [ "$do_r" -eq 1 ]; then
    echo 'Options -h and -r are mutually exclusive' >&2
    exit 1
fi

# code that acts on user-supplied options below
1
22.07.2019, 17:25
1 ответ

Поскольку вы устанавливаете GRUB на другой диск, вам нужно сообщить grub-install, где находится раздел /bootна вашем новом диске. Вот пример (запуска от имени пользователя root):

mount /dev/sdb2 /mnt
grub-install --boot-directory=/mnt /dev/sdb
umount /mnt

См.https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dinstall.html#Invoking-grub_002dinstall

1
27.01.2020, 23:41

Теги

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