【发布时间】:2010-08-30 08:13:47
【问题描述】:
从我的 ksh 我有
[[ ` echo $READ_LINE | awk '{print $2}' ` != SOME_WORD ]] && print "not match"
我可以得到建议如何在没有 echo 命令的情况下验证相同的内容吗? (也许 awk/sed 适合这个?)
莉迪亚
【问题讨论】:
从我的 ksh 我有
[[ ` 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"
你想要完成什么?您的几个问题几乎相同。
【讨论】:
#!/bin/ksh、#!/usr/bin/ksh 或#!/bin/sh 作为脚本的第一行(shebang)?
如果您使用的是 ksh,则只需使用 shell,而无需调用外部命令
set -- $READ_LINE
case "$2" in
"SOME_WORD" ) echo "found";;
esac
既然我看到你有其他类似的线程,你为什么还要解决这个问题?
【讨论】: