Невозможно даже запустить установку Devuan / Debian

until
  printf 'Please enter 1 or 2: '
  IFS= read -r line || exit # exit on EOF
  [ "$line" = 1 ] || [ "$line" = 2 ]
do
  printf >&2 '"%s" is neither 1 nor 2, try again.\n' "$line"
done

С IFS = и -r входная строка сохраняется как есть в $ линия .Вы можете опустить IFS = , чтобы пробелы (при условии, что вы не изменили $ IFS ) автоматически удалялись из начала или конца ввода.

Если на входе должны быть только строки 1 или 2 , тогда вы хотите использовать = , а не -eq .

Если вы хотите разрешить другие выражения 1 или 2 чисел , например 01 , 1 + 1 , 1.0 , 100e-2 , exp (0) , RANDOM (иногда), тогда вы можете использовать -eq , но обратите внимание, что не все оболочки принимают все типы выражений выше ( ksh93 примет их все, но bash будет принимать только такие вещи, как 1 ( начальные и / или конечные пробелы) или 0001 (начальные нули)), и это означает, что вы получите сообщения об ошибках для входных данных, которые не образуют допустимые арифметические выражения.

С оболочками, которые интерпретируют арифметические выражения, это также опасно, так как они могут изменять значения переменных (например, для ввода типа PATH = 123 ) или даже запускать произвольные команды (например, для ввода типа a [ 0 $ (cmd> & 2)] ).

В зависимости от оболочки, вы также можете получить ложные срабатывания на 18446744073709551617 или 4294967297 (или любое другое число, кратное 2 32 или 2 64 + 1 или 2), поскольку большинство оболочек используют 64-битные или 32-битные целые числа.

Что бы вы ни делали, не используйте -o и -a двоичный тест / [ операторы. Их следует удалить, так как они делают синтаксический анализ команды [ потенциально неоднозначным и на практике ненадежным (и теперь помечены устаревшими в спецификации POSIX) .

Например:

$ line='!' sh -c '[ "$line" = 1 -o "$line" = 2 ]'
sh: line 0: [: too many arguments

И не забудьте заключить в кавычки ваши переменные ( "$ line" , а не $ line , которые будут подвергаться split + glob).

2
04.04.2019, 14:47
1 ответ

Похоже, AMD Ryzen 7 2700U + Vega 10 не поддерживается ядрами Linux до версии 4.10, а стабильная версия Debian и Devuan работает на ядре 4.9.
Для этого процессора AMD предлагаются ядра 4.18 и новее.

Ссылки:

https://lists.debian.org/debian-user/2017/03/msg00063.html
https://github.com/M-Bab/linux-kernel-amdgpu-binaries
Debian и мой новый AMD Ryzen 2700U (Vega 10 )не дружат
https://www.reddit.com/r/Amd/comments/8snkup/most_stable_gnulinux_distro_for_a_ryzen_cpu/
https://www.reddit.com/r/debian/comments/8hwts3/is_it_possible_to_install_debian_on_amd_ryzen/
https://www.claudiokuenzler.com/blog/819/linux-going-amd-ryzen-cpu-debian-strech-9


П.С. :Новое ядро ​​не решило мою проблему. См. здесь:Не удается запустить/установить Linux на ThinkPad E585

1
27.01.2020, 22:17

Теги

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