考虑这个脚本:
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
。