このスクリプトの一部として与えられた最初の引数がファイルの最初の単語と一致することを確認できるはずです。その場合はエラーメッセージで終了し、そうでない場合はパラメータをファイルに追加します。その文を書く方法は理解していますが、スクリプトで使用するif
方法はわかりません。grep
私もgrep
こんな感じです。
grep ^$1 schemas.txt
私はこれが私がしたよりもはるかに簡単になると思います。
文に「パラメータが多すぎます」というエラーが表示されますif
。スペースを削除したgrep -q
後、バイナリ演算子に対して予期されるエラーが発生しました。
if [ grep -q ^$1 schemas.txt ]
then
echo "Schema already exists. Please try again"
exit 1
else
echo "$@" >> schemas.txt
fi
ベストアンサー1
grep
何かが見つかった場合(0)と何も見つからない場合(0ではない)は、別の終了コードを返します。if
ステートメント内では、ゼロ出口コードは「true」にマップされ、ゼロ以外の出口コードはfalseにマップされます。 grepには、-q
一致するテキストを出力せずに終了ステータスコードのみを返すパラメータがあります。
したがって、次のようにgrepを使用できます。
if grep -q PATTERN file.txt; then
echo found
else
echo not found
fi
簡単に言えば、このようなタスクを実行すると、これが実際にgrepのように実行されているコマンドであることがif [ -z "$var" ]…
わかります。[
私のシステムでは/usr/bin/[
。同様に動作し、[
true に対して 0 終了コードを返し、false に対して 0 以外の終了コードを返します。 (結論を除いてtest
と同じ)[
]