檢測可選函數參數(標量)

檢測可選函數參數(標量)

考慮這個腳本:

function alfa(bravo, charlie) {
  if (charlie)
    return "charlie good"
  else {
    return "charlie bad"
  }
}
BEGIN {
  print alfa(1, 1)
  print alfa(1, 0)
  print alfa(1, "")
  print alfa(1)
}

結果:

charlie good
charlie bad
charlie bad
charlie bad

Awk 是否有辦法判斷何時未提供參數?

答案1

是的,你可以這樣做:

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

答案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評估為 true,!length(var)排除 時的情況var = 0

相關內容