質問

私は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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top