ブログ

同じディレクトリにあるシェルスクリプトを一括で実行する方法

at_shiita.ishigaki
2022年2月16日 8時30分

同じディレクトリにあるシェルスクリプトを一括で実行するにはrun-partsコマンドを実行します。
※ここでは例として、hogeとfugaというシェルスクリプトを作成し、実行します。

[armadillo~ ]# cat << EOF > hoge
#!/bin/sh

echo hoge
EOF
[armadillo~ ]# cat << EOF > fuga
#!/bin/sh

echo fuga
EOF
[armadillo ~]# chmod +x hoge fuga
[armadillo~ ]# run-parts ./
fuga
hoge

スクリプト実行の順番は名前順となります。
スクリプト実行の順番を逆にする場合は--reverseオプションを使用します。

[armadillo~ ]# run-parts --reverse ./
hoge
fuga

実行されるスクリプトのファイル名はASCIIの小文字・大文字・数字・アンダースコア・ハイフンのみとなります。ドット等が含まれている場合は実行対象になりませんので、ご注意ください。
実行されるスクリプト名を表示するには--listオプションを使用します。

[armadillo~ ]# run-parts --list ./
.//fuga
.//hoge
[armadillo~ ]# cp hoge hoge.sh
[armadillo~ ]# run-parts --list ./
.//fuga
.//hoge

どのスクリプトが実行されているかを確認するには-vオプションを使用します。

[armadillo ~]# run-parts -v ./
run-parts: executing .//fuga
fuga
run-parts: executing .//hoge
hoge

スクリプトに引数を与えるには-aオプションを使用します。

[armadillo ~]# cat << "EOF" > arg
#!/bin/sh

echo $1
EOF
[armadillo ~]# run-parts -a piyo ./           
piyo
fuga
hoge

run-partsコマンドを使用することで、cronに登録されているスクリプトのテスト等を行うことができます。