TCL(expect):can';“我不读”;NF";(来自awk):没有此类变量
试图从文件中获取第一行的最后一个字。不确定为什么要使用以下命令:TCL(expect):can';“我不读”;NF";(来自awk):没有此类变量,awk,tcl,expect,Awk,Tcl,Expect,试图从文件中获取第一行的最后一个字。不确定为什么要使用以下命令: send“cat moo.txt | grep QUACK*| awk'NF>1{print$NF}'meow.txt>>bark.txt” 正在获取错误消息无法读取“NF”:没有此类变量 我可以在我的机器上运行awk'NF>1{print$NF}'meow.txt>>bark.txt代码片段。然而,当它在我的expect脚本中运行时,它给了我这个错误 有人知道为什么expect无法识别awk内置变量吗?我认为您的脚本在通过sen
send“cat moo.txt | grep QUACK*| awk'NF>1{print$NF}'meow.txt>>bark.txt”
正在获取错误消息无法读取“NF”:没有此类变量
我可以在我的机器上运行awk'NF>1{print$NF}'meow.txt>>bark.txt
代码片段。然而,当它在我的expect
脚本中运行时,它给了我这个错误
有人知道为什么expect无法识别
awk
内置变量吗?我认为您的脚本在通过send
发出该命令之前,试图用它的值扩展变量$NF<代码>$NF没有设置在shell中,因为它是awk的内部,awk甚至还没有机会运行,所以它正在犹豫
尝试转义该变量,以便将其视为字符串文字,并且当运行awk
时,awk
将能够使用该变量:
send "cat moo.txt | grep QUACK * | awk 'NF>1{print \$NF}' meow.txt >> bark.txt "
问题的根源在于内部单引号在这里没有特殊意义。在shell中也是如此:而
'$FOO'
表示文本$FOO
(美元符号,F,O,O)。如果我们把它放在双引号中:“'$FOO'
,单引号现在只是普通字符:这表示一个单引号,FOO
变量的值,单引号。Tcl与单引号等价的是{
大括号}
。