下面是示例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"
有什么想法吗?
答案 0 :(得分:3)
AWK区分大小写。您需要函数print
。
通过编写PRINT NF
代替,AWK将其解释为连接的两个变量的名称。 PRINT
的值为空; NF
的值为“9”。您没有要求它对结果执行任何操作(例如打印),因此AWK脚本不会为该输入行生成任何输出。
答案 1 :(得分:2)
您要查找的命令是print
,而不是PRINT
。 Awk区分大小写。
此外,建议使用以下命令替换:$(...)
而不是反引号(`
)。
所以在你的情况下:
NF=$(echo $VAR | awk '{print NF}')
答案 2 :(得分:1)
其他人已经解释了您的代码出了什么问题。我想建议另一种计算单词数量的方法:
var="The quick brown fox jumped over the lazy dog."
wc -w <<<"$var"
或旧壳:
echo "$var" | wc -w
答案 3 :(得分:1)
这是一种方法(使用Here String)。 PS总是双引号变量,如"$var"
NF=$(awk '{print NF}' <<< "$var")