質問
私はegrepのを使って入力を検証しようとしているとregex.Hereは、スクリプト(Cシェル)からのラインです。
echo $1 | egrep '^[0-9]+$'
if ($status == 0) then
set numvar = $1
else
echo "Invalid input"
exit 1
endif
IパイプエコーがEGREPする場合、それは動作しますが、それはまた、画面上の変数を印刷し、これは私が必要としないものです。
解決
単に出力を抑制するためには、あなたがnullデバイスにリダイレクトすることができます。
echo $1 | egrep '^[0-9]+$' >/dev/null
if ($status == 0) then
set numvar = $1
else
echo "Invalid input"
exit 1
endif
また、ステータスを使用して使用するのではなく、試合の数を取得するには-c
オプションを使用することを検討することをお勧めします。
csh
を使用している場合を除き、また、ステータスがない$?
に$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
所属していません StackOverflow