Определить необязательный аргумент функции (скаляр)

Я столкнулся с той же проблемой (также с radeon ), и я проследил ее через Xorg и исходные коды ядра. Я пришел к выводу, что это (скорее всего, никогда) не будет работать без проклятой systemd . Указатели кода см. В этом архиве электронной почты:

Re: X без suid root

8
26.06.2018, 05:03
2 ответа

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 .

6
27.01.2020, 20:11

Да, вы можете сделать это:

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
6
27.01.2020, 20:11

Теги

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