версия ядра в загрузочной папке

Ошибка заключается в том, что вы не передаете никаких флагов, поэтому весь цикл while getoptsникогда не запускается, ваш $sflagостается пустым, и в результате фактически выполняется bash:

if ""; then echo "okay" ; fi

Простейшим решением было бы инициализировать ваши переменные как false:

verbose='false'
aflag='false'
bflag='false'
sflag='false'
files='false'
while getopts 'absf:v' flag; do
    case "${flag}" in
        a) aflag='true';;
        b) blag='true' ;;
        s) sflag='true' ;;
        f) files="${OPTARG}" ;;
        v) verbose='true';;
        *) error "Unexpected option ${flag}" ;;
    esac
done

# ======= Below this is where the error gets thrown
if "$sflag" ;
then
  echo "okay" ;
fi
# ======= end error throwing code 

echo "end" # this prints just fine
1
05.11.2019, 09:39
1 ответ

Это Open Network Linuxядра , и имена каталогов разделены следующим образом:

  • 3.16-ltsи т. д.:подкаталог , отслеживающий заданный набор выпусков;
  • x86_64-all:подкаталог , содержащий используемую конфигурацию ядра.

allв x86_64-allозначает, что конфигурация ядра применяется ко всем установкам x86 _64; эта номенклатура позволит при необходимости использовать конкретные варианты. Если ваша машина использует ядро ​​3.16,на нем работает любое ядро ​​​​серии 3.16, установленное в настоящее время — на данный момент это 3.16.64 . Каждое ядро ​​«LTS» (долгосрочной поддержки )получает обновления в течение длительного времени после его первоначального выпуска; вы можете увидеть их на kernel.org .

Вывод uname -aв вашей системе должен точно сказать вам, какой выпуск ядра вы используете. Это может быть не 3.16.64, в зависимости от даты выпуска вашей системы с -по -, но она будет новее 3.16.7 — первым ядром 3.16 в ONL было 3.16.39 ..

3
27.01.2020, 23:22

Теги

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