次のスクリプトを検討してください:
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
。