変数の展開とスラッシュの無視に問題があります。bash変数のスラッシュをエスケープしないようにします。
私はgitリポジトリにテキストを見つけ、それを他のテキストに置き換える簡単なスクリプトを書いています。これは正常に動作しますが、今はregexを使って展開したいと思います。 git grepとsedの両方が正規表現をサポートしているので、これはあまり問題にならないはずです。しかし、入力変数に正規表現を使用しようとするとスラッシュが削除され、スクリプトが破棄されます。
端末でgit grep "\bPoint"
を実行すると、多くの結果が得られます。しかし、スクリプトでユーザー入力を使用すると、同じ結果を得る方法を理解できません。 git grep
ファイルは\bPoint
の代わりに入力をbPoint
に変更し、sedに与える結果は見つかりません。
#!/bin/bash
# This script allows you to replace text in the git repository without damaging
# .git files.
read -p "Text to replace: " toReplace
read -p "Replace with: " replaceWith
git grep -l ${toReplace}
# The command I want to run
#git grep -l "${toReplace}" | xargs sed -i "s,${toReplace},${replaceWith},g"
私は引用のさまざまな組み合わせを試してみましたが、何も私のために働くようです。
スラッシュはありません、それはバックスラッシュです。 –