Я столкнулся с той же проблемой (также с radeon ), и я проследил ее через Xorg и исходные коды ядра. Я пришел к выводу, что это (скорее всего, никогда) не будет работать без проклятой systemd . Указатели кода см. В этом архиве электронной почты:
awk
не имеет встроенного способа проверки инициализации переменной. Вы должны сделать это самостоятельно:
function alfa(bravo, charlie) {
if (charlie == 0 && !length(charlie))
return "charlie bad"
else {
return "charlie good"
}
}
BEGIN {
print alfa(1, 1)
print alfa(1, 0)
print alfa(1, "")
print alfa(1)
}
Общий способ:
var == 0 && !length(var)
Неинициализированная переменная и 0 приводят к тому, что var == 0
оценивается как истина, ! Length (var)
исключает случай, когда var = 0
.
Да, вы можете сделать это:
function alfa(bravo, charlie) {
if (charlie) {
return "charlie good"
}
if (charlie == 0 && charlie == "") {
return "charlie not provided"
}
if (!charlie && charlie != 0) {
return "charlie null"
}
if (!charlie && charlie != "") {
return "charlie 0"
}
}
Результат:
charlie good
charlie 0
charlie null
charlie not provided