くれなゐの雑記

身の回りの人や自分が困っていたことを記事にしています

シェルスクリプトで, * でちゃんと全部読み込めるようにしてあげる

シェルスクリプトで, 適当なコマンドを自作した時に, 引数が一個しか対応していない みたいなことあると思います.
制作したコマンドを以下のfor文で囲ってやると, 引数の数がいっぱいあったり, 正規表現等で複数指定してもOKになります.

for i in 'seq 1 ${#}'
do
やりたいコマンド
shift
done

for文で, 指定された引数回シェルを実行し, shiftで引数をshiftさせることで, すべての引数に対してやりたいコマンドを実行することができます。
ただ, これはコマンドの引数がひとつだけのケースで, 2つ以上読み込む必要がある場合は, ループの回数とshiftの回数を少々調整してあげる必要があります
以前, 記事
kurenaif.hatenablog.com
で作った, makeplt_epsもこの方法で

makeplt_eps *.plt

と打ち込むと, カレントディレクトリ内のすべてのpltファイルをgnuplotでepsにすることができるようにしています.