下面是示例shell脚本,这里NF的值是Null而不是9(第4行表达式的输出)
#!/bin/bash
#set -x
VAR="The quick brown fox jumped over the lazy dog."
NF=`echo $VAR | awk '{PRINT NF}'`
echo "$NF"
任何想法吗?
AWK区分大小写。您想要函数print
。
通过写PRINT NF
代替,AWK将其解释为两个连接的变量的名称。PRINT
为空值;NF
的值为"9"。您没有要求它对结果执行任何操作(例如打印它),因此AWK脚本不会为这行输入生成输出。
您要查找的命令是print
,而不是PRINT
。Awk是区分大小写的。
同时,建议使用以下命令替换:$(...)
代替反引号(`
)。
所以在你的例子中:
NF=$(echo $VAR | awk '{print NF}')
其他人已经解释了您的代码的错误。我想建议另一种计算单词数的方法:
var="The quick brown fox jumped over the lazy dog."
wc -w <<<"$var"
或者在旧的shell上:
echo "$var" | wc -w
这里有一种方法(使用Here字符串)。总是像这样双引号引用变量"$var"
NF=$(awk '{print NF}' <<< "$var")