0

私は現在シェルスクリプトに取り組んでおり、文字列Aが文字列Bに含まれているかどうかを確認する必要があります。

だから私はすぐに書きました(例として「キー」を使って)

if [ `echo "$KEY" | grep "\$"` ]

しかし、何らかの理由で、私のシェルスクリプトでの出力

echo "$KEY" | grep "\$"

「値」を返します

zshrcで同じコマンドをテストした後、異なる結果が得られました(期待どおりには何もありません)

誰がそれがどこから来るのか知っていますか?

編集:スクリプトの書き方を作り直した後、「」の引用符を「」に変更し、次の正しい結果を得ました。

echo "$KEY" | grep '\$'

しかし、私のテストはまだ書き終えています

[ if `echo "$KEY" | grep '\$'` ]
4

1 に答える 1

3

より慣用的で簡単な方法は、シェルのcaseステートメントを使用することです。構文は少し不気味で、対処すべきメタ文字がまだいくつかありますが、のように完全な正規表現セットではありませんgrep

case '$key' in
  *\$* ) echo contained ;;
  * ) echo not ;;
esac
于 2013-01-07T16:21:18.130 に答える