我正在尝试使用 egrep 和 regex 验证输入。这是来自脚本(c-shell)的行:
echo $1 | egrep '^[0-9]+$'
if ($status == 0) then
set numvar = $1
else
echo "Invalid input"
exit 1
endif
如果我通过管道 echo 到 egrep 它可以工作,但它也会在屏幕上打印变量,这是我不需要的。
要简单地抑制输出,您可以将其重定向到空设备。
echo $1 | egrep '^[0-9]+$' >/dev/null
if ($status == 0) then
set numvar = $1
else
echo "Invalid input"
exit 1
endif
您可能还需要考虑使用该-c
选项来获取匹配数,而不是使用状态。
此外,除非您正在使用 ,否则csh
状态将存储在$?
not in$status
grep
有一个-q
抑制输出的选项
所以:
egrep -q '^[0-9]+$'
你可以使用 awk
$ echo "1234" | awk '{print $1+0==$1?"ok":"not ok"}'
ok
$ echo "123d4" | awk '{print $1+0==$1?"ok":"not ok"}'
not ok