ダウンロードしたファイルを次のようにログに保存します。
[source] filename
ファイルを何度もダウンロードしたくない場合は、次のようにします[source] filename
。
if ! grep "$signature" downloaded.log > /dev/null; then
wget ...
fi
しかし、grepで行を開始すると、[
必要に応じて機能しません。
signature="[source] filename"
echo $signature | grep "$signature"
echo $signature | grep "\$signature" #trying to escape first bracket
どちらも何も返しません。
スマートなソリューションはありますか?
()
かっこ、中括弧、{}
または他のものに切り替えるためにコードを変更する必要がない場合は良いでしょう。<>
答え1
最初に変数を引用してから、-F
--fixed-strings
括弧が正規表現のメタ文字として解釈されないようにスイッチを使用する必要があります。
echo "$signature" | grep -F "$signature"
-q
--quiet
その後、スイッチも使用する必要があるため、最初の項目が表示さgrep
れたら終了します。これは単に速度上の理由によるものです。
if ! grep -Fq "$signature" downloaded.log; then
wget ...
fi