Я просто забыл mount boot (спасибо, jasonwryan ).
Решение этой проблемы в моем случае было:
Обновление:
пакман -Сью
Регенерация initramfs с помощью:
mkinitcpio -p linux
Если вы используете grub:
grub -mkconfig -или /mnt/boot/grub/grub.cfg
Перезапустить.
Это происходит потому, что shift
выполняет сдвиг $2
в $1
независимо от того, какой текст у вас есть для падежей. Точная цель вашего сценария неясна, но, например, если вы хотите избежать этого, вы можете сделать что-то вроде:
while [[ "$1" != "" && "$2" != -* ]]; do
case $1 in
-f | --first ) shift
first=$1
;;
-s | --second ) shift
second=$1
;;
* ) break
esac
shift
done
echo "first: "$first" second: "$second
Это позволит избежать манипуляций, если аргумент отсутствует.
Пример вывода:
$./script.sh --first a --second b
first: a second: b
$./script.sh --first --second b
first: second:
Используйте оболочку, созданную -в getopts
. При этом используется строка опций, в которой вы можете перечислить все допустимые символы опций И независимо от того, требуют ли они аргумента или нет (, указав после символа опции:
). Например:
while getopts 'f:s:' opt; do
case "$opt" in
f) first="$OPTARG" ;;
s) second="$OPTARG" ;;
:) usage 1 "-$OPTARG requires an argument" ;;
?) usage 1 "Unknown option '$opt'" ;;
esac
done
shift $((OPTIND -1))
Обратите внимание, что встроенный -в getopts
не поддерживает длинные опции --. Если это требование, используйте программу getopt
из пакета util-linux
-. НЕ используйте никакую другую версию, все остальные имеют серьезные недостатки.
TEMP=$(getopt -o 'f:s:' --long 'first:,second:' -n "$0" -- "$@")
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$TEMP"
while true ; do
case "$1" in
-f|--first) first="$2" ; shift 2 ;;
-s|--second) second="$2" ; shift 2 ;;
--) shift ; break ;;
*) echo 'Internal error!' ; exit 1 ;;
esac
done
ПРИМЕЧАНИЯ:
getopts
(сs
)встроен -в оболочки POSIX, является переносимым и стандартным. getopt
(безs
)не является стандартом -, с несколькими конфликтующими версиями, большинство из которых имеют серьезные недостатки. Версия из пакета util-linux
безопасна в использовании, если вас не волнует переносимость.