私は文字列のファイルを検索したかったので、サイトを何度も検索した後、最終的にgrep
inと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
[..]