如何egrep变量 - Unix shell脚本

时间:2009-11-07 11:08:57

标签: shell unix csh

我正在尝试使用egrep和regex来验证输入。这是来自脚本(c-shell)的行:

echo $1 | egrep '^[0-9]+$'
if ($status == 0) then
set numvar = $1
else
    echo "Invalid input"
    exit 1
endif

如果我将回声传递给egrep它可以工作,但它也会在屏幕上打印变量,这是我不需要的。

3 个答案:

答案 0 :(得分:4)

要简单地抑制输出,您可以将其重定向到空设备。

echo $1 | egrep '^[0-9]+$' >/dev/null
if ($status == 0) then
set numvar = $1
else
    echo "Invalid input"
    exit 1
endif

您可能还需要考虑使用-c选项来获取匹配数,而不是使用状态。

另外,除非您使用的是csh,否则状态会存储在$?而不是$status

答案 1 :(得分:3)

grep有一个-q选项可以抑制输出

所以:

egrep -q '^[0-9]+$'

答案 2 :(得分:0)

你可以使用awk

$ echo "1234" | awk '{print $1+0==$1?"ok":"not ok"}'
ok
$ echo "123d4" | awk '{print $1+0==$1?"ok":"not ok"}'
not ok