调用awk的shell脚本产生意外的空结果

调用awk的shell脚本产生意外的空结果,shell,awk,Shell,Awk,下面是示例shell脚本,这里NF的值为Null,而不是9(第4行表达式的输出) 有什么想法吗?您要查找的命令是print,而不是print。Awk区分大小写 此外,建议使用以下命令替换:$(…)而不是反勾号(`) 因此,在你的情况下: NF=$(echo $VAR | awk '{print NF}') 您要查找的命令是print,而不是print。Awk区分大小写 此外,建议使用以下命令替换:$(…)而不是反勾号(`) 因此,在你的情况下: NF=$(echo $VAR | awk '{p

下面是示例shell脚本,这里NF的值为Null,而不是9(第4行表达式的输出)


有什么想法吗?

您要查找的命令是
print
,而不是
print
。Awk区分大小写

此外,建议使用以下命令替换:
$(…)
而不是反勾号(
`

因此,在你的情况下:

NF=$(echo $VAR | awk '{print NF}')

您要查找的命令是
print
,而不是
print
。Awk区分大小写

此外,建议使用以下命令替换:
$(…)
而不是反勾号(
`

因此,在你的情况下:

NF=$(echo $VAR | awk '{print NF}')

AWK区分大小写。您需要功能
打印


通过写入
PRINT NF
,AWK将其解释为两个串联变量的名称<代码>打印的值为空
NF
的值为“9”。您没有要求它对结果执行任何操作(例如打印),因此AWK脚本不会为该输入行生成任何输出。

AWK区分大小写。您需要功能
打印


通过写入
PRINT NF
,AWK将其解释为两个串联变量的名称<代码>打印的值为空
NF
的值为“9”。您没有要求它对结果执行任何操作(例如打印),因此AWK脚本不会为该行输入生成任何输出。

其他人已经解释了您的代码的错误。我想提出另一种计算字数的方法:

var="The quick brown fox jumped over the lazy dog."
wc -w <<<"$var"

其他人已经解释了代码的错误。我想提出另一种计算字数的方法:

var="The quick brown fox jumped over the lazy dog."
wc -w <<<"$var"
下面是一种方法(使用Here字符串)。PS总是像这样的双引号变量
“$var”

NF=$(awk'{print NF}'这里有一种方法(使用Here字符串)。PS始终使用双引号变量,如下面的
“$var”


NF=$(awk'{print NF}'功能是
print
而不是
print
谢谢Jay,很抱歉,您的答案在评论中,因此我无法选择您的答案作为接受的答案,即使您是第一个正确回答的人。感谢您的指导和您的时间。您好,Samb无需担心,很高兴您一切正常。
;)
功能是
print
而不是
print
谢谢Jay,很抱歉,您的答案在评论中,所以我无法选择您的答案作为接受的答案,即使您是第一个正确回答的人。感谢您的指导和您的时间。您好,Samb无需担心,很高兴您一切正常。
;)
还建议对变量进行双引号<代码>echo“$VAR”
谢谢:),是的,Chirag.``不推荐使用$(..)是的,建议使用是的,我们应该双引号引用变量以防止全局变量。还建议双引号引用变量
echo“$VAR”
Thank you:),Yes Chirag.``不推荐使用$(..)是的,Jotne我们应该双引号引用变量以防止全局搜索。感谢Tom,对于新的备选答案,我检查了它,它完全按照预期工作。这取决于您是要计算每行的单词数还是整个字符串中的单词总数。对于一行示例,它们恰好是相同的。谢谢Tom,对于新的备选答案,我检查了它,它完全按照预期工作。这取决于您是要计算每行的单词数还是整个字符串中的单词总数。对于单线示例,它们恰好是相同的。
NF=$(awk '{print NF}' <<< "$var")