これはすでに回答済みですが、適切な検索条件が見つからない場合は謝罪します。Bash:変数を介してコマンドに引数としてファイルパターンを渡します。
私はfindコマンドのために(ユーザー定義の設定に基づいて)動的に検索用語を定義しようとしている:私はコマンドをecho
場合
# reading user settings results in array of filename patterns to delete:
patterns=("*.url" "*.html")
for i in ${patterns[@]}; do
find . -iname $i -delete
done
、結果の文字列は、例えば、正しく見えます
find . -iname "*.url" -delete
find . -iname "*.html" -delete
私には明らかなものがありませんが、何も試したことはありません。
私はBash 4.4.5を使用しています。
----------------チャールズ・ダフィーとL」にEDIT -----------------
私のおかげでL'lは正しい解決策です。配列の文字列と引用された変数を引用符で囲み、両方の変数を同時に引用することに失敗しました。
教訓:常にシェル変数を引用します。
これはhttp://shellcheck.net/があなたを魅了する問題です。 –
私はまだ自分自身の質問に答えるつもりはないが(誰かがより良い解答や説明を持っている場合に備えて)、解決策を見つけた。配列の二重引用符が問題であると思われます。配列の引用符を取り除き、var "" $ i "'をソフトクォートすると、期待どおりに動作します。引用符を含む文字列と私がまだgrokkingしていない引用された文字列の間には微妙な違いがあります。 –
配列定義から引用符を削除するのは間違っています。これは、 'find'で評価されるのではなく、割り当て時にグロブが展開されるようにします。 –