
次のbashコマンドを実行しています。
find . \( -iname '*.aif' -o -iname '*.pdf' -o -iname '*.exe' -o -iname '*.mov' \
-o -iname '*.doc' \) -exec rm -f {} \;
find
後でスクリプトの別の呼び出しで同じパラメーターを実行します。\( -iname '*.aif' -o -iname '*.pdf' -o -iname '*.exe' \ -o -iname '*.mov' -o -iname '*.doc' \)
部品を変数に保存する方法はありますか?
答え1
ksh、bash、またはzshは配列変数を使用します。
find_parameters=(\( -iname '*.aif' -o … -iname '*.doc' \))
find . "${find_parameters[@]}"
他のシェルには良い方法はありません(複雑で壊れやすい方法がありますが、必ずしも必要でない限りお勧めできません)。単一の配列が必要な場合は、位置引数を使用できます。
set \( -iname '*.aif' -o … -iname '*.doc' \)
find . "$@"