[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match"
我可以建议如何验证没有echo命令一样吗? (也许AWK/sed的就是罚款吗?)
利迪娅
[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match"
我可以建议如何验证没有echo命令一样吗? (也许AWK/sed的就是罚款吗?)
利迪娅
像这样将工作:
awk -v x="$READ_LINE" -v y="SOME_WORD" 'BEGIN { split(x, a); if (a[2] != y) print "not match";}'
但来自哪里$READ_LINE
?你想达到什么目的?也许还有一个很好的简单的sh
或ksh
解决方案。
我非常怀疑你的说法echo
(这可能是一个shell内置)需要比awk
更多的时间。这里是一个plain sh
版本:
set -- $READ_LINE
[ x$2 != xSOME_WORD] && echo "not match"
但ksh
solution of Dennis Williamson寻找最适合你的情况。
read ign val && [ X$val != XSOME_WORD ] && echo "not match"
这样会将字段分开并测试第二个单词。
var=($READ_LINE)
[[ ${var[1]} != SOME_WORD ]] && print "not match"
你试图完成什么?你的几个问题几乎完全相同。
var =($ READ_LINE)在ksh中没有有效的语法! – lidia 2010-08-30 09:59:51
是的。你必须使用很老的ksh – ghostdog74 2010-08-30 13:48:05
@lidia:什么版本的ksh?你使用'#!/ bin/ksh','#!/ usr/bin/ksh'还是'#!/ bin/sh'作为脚本的第一行(shebang)? – 2010-08-30 14:23:13
,如果你使用的是ksh的,那么就使用shell,而无需调用外部命令
set -- $READ_LINE
case "$2" in
"SOME_WORD") echo "found";;
esac
为什么你还在因为我看你有没有类似这样的其他线程黏合这个问题?
目标是节省时间(回声需要时间awk不) – lidia 2010-08-30 09:07:10