Ошибка заключается в том, что вы не передаете никаких флагов, поэтому весь цикл 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
Это 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 ..