シェルスクリプトでgrep文とif文を使用する

シェルスクリプトでgrep文とif文を使用する

私は文字列のファイルを検索したかったので、サイトを何度も検索した後、最終的にgrepinとif文を使用しました。しかし、他の関連記事で見つけたすべての指示に従ったにもかかわらず、期待どおりに何も起こりませんでした。ここに私のコードがあります。

echo "Enter dicounter number"
read string1
echo "Enter side with LEDs"
read string2

if grep -q "dicounter_$string1_from_$string2" MasterFile.txt; then
   echo "dicounter_$string1_from$string2 already exists in MasterFile."
else
   { (a bunch of stuff to make the transmitter operate) }
fi

主な問題は、コマンドライン引数を読み取る方法だと思います。

答え1

スクリプトが期待どおりに機能しない場合、最初に試すことができるのは、set -xコードの問題点の前(この場合は以前)に追加してからgrepスクリプトを実行することです。これにより、スクリプトが何であるかがわかります。実際にそうすることで、あなたがしたことと比較できるようにしてください予想されるそれをしています。

あなたの場合、問題は変数名の有効な文字である可能性があるため、予想される値の代わりに_値を使用しようとしています。そのため、派手な操作を使用しなくても、変数名を中括弧で囲むことをお勧めします。たとえば、$string1_from_$string1

if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
   echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
   [..]

関連情報