くれなゐの雑記

例を上げて 自分で手を動かして学習できる入門記事を多めに書いています

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

シェルスクリプトで, 適当なコマンドを自作した時に, 引数が一個しか対応していない みたいなことあると思います.
制作したコマンドを以下の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にすることができるようにしています.