当我想检查返回值是否为整数时,我在 bash 脚本中使用它:
if [ -z "$value" ]
then
echo 0
else
echo $value
fi
我试图z
在 awk 中使用选项与 if。例如我有这一行:
PRIMARY SECONDARY CONNECTED 350 800
我尝试使用这个:
/bin/awk '{if( -z $1){print "0"}else{print $1}}' script
无论我$1
用$2
or$3
或$4
or替换$5
它总是返回0
。我是否以错误的方式使用 awk?
-z
在 shell 中不会告诉你“一个值是否为整数”,而是它的长度是否> 0。您可以在 awk 中使用
length
--if(length($1)) ...
如果你想检查一个变量或字段是否是一个数字
awk
,你可以这样做:您的
if(-z $1)
表达式将简单地否定未设置的变量z
,这将产生0
,然后将 附加0
到$1
字段,创建一个始终被认为是 TRUE 的非空字符串,即使$1
是空字符串""
或数字0
。正如其他人所说,没有
-z
测试awk
,-z
shell 中的测试测试空字符串,而不是整数。在
awk
您将执行以下操作来测试变量是否为空(如果是则输出零,如果不是则输出其值):或者,
例如:
为输入中第一个制表符分隔的值为空的行打印零,否则为实际值。
可能相关(如果您想在 中查找变量的类型
awk
):尝试
awk中没有
-z
选项。