我正在尝试使用egrep和regex来验证输入。这是来自脚本(c-shell)的行:
echo $1 | egrep '^[0-9]+$'
if ($status == 0) then
set numvar = $1
else
echo "Invalid input"
exit 1
endif
如果我将回声传递给egrep它可以工作,但它也会在屏幕上打印变量,这是我不需要的。
答案 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