Вы можете вернуть только целое число от 0 до 255 из функции оболочки. Это то же ограничение, что и для исполняемого файла. Различные оболочки по-разному реагируют, если вы передаете нечисловой аргумент; bash выводит сообщение об ошибке.
$ bash -c 'f () { return true; }; f; echo $?'
bash: line 0: return: true: numeric argument required
2
Передайте 0 для истины и любое значение от 1 до 125 для ложного, как при выходе из программы. Значения от 126 до 255 также неверны, но имеют обычное значение (невозможно запустить программу или программа прервана сигналом).
function is_log_started()
{
if test -f "log/server.log"; then
return 0
fi
return 1
}
Но это сложный способ записи.
function is_log_started
{
test -f "log/server.log"
}
Статус возврата из функции оболочки - это статус возврата последнего выполненного оператора.
Ваш тест также неверен. [is_log_started = true]
проверяет, являются ли is_log_started
и true
одной и той же строкой. Чтобы проверить, истинно ли возвращаемое состояние вызова функции, вы просто вызываете функцию. Каждая команда оболочки уже является логической: true, если команда возвращает 0, иначе false.
function is_log_started
{
test -f "log/server.log"
}
if is_log_started; then
echo "log started"
fi
Если вы используете основные ядра или ядра большинства основных дистрибутивов, лучший способ проверить полную поддержку ретполина (, т.е. ядро было сконфигурировано с CONFIG_RETPOLINE
и было собрано с ретполином -способный компилятор )должен искать «Полный универсальный ретполин» в /sys/devices/system/cpu/vulnerabilities/spectre_v2
. В моей системе:
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW
Если вам нужны более полные тесты для обнаружения ретполинов в ядрах без spectre_v2
файла systree, посмотрите, какspectre-meltdown-checker
обстоят дела.
В данном конкретном случае ответ Стивена Китта более исчерпывающий, поскольку для поддержки ретполина также требуется новая версия компилятора.
Но в большинстве дистрибутивов файл конфигурации ядра доступен в одном из следующих мест::
/boot/config-4.xx.xx-...
/proc/config.gz
Тогда вы можете простоzgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz