スポンサーリンク
-xで実行権限をチェック
下記のように、if文の中の先頭に-xをつけます。
ファイルの実行権限があれば、file.shを実行しています。
※MACターミナル(BSD系)での動作確認です。
参考:[シェル]if文でファイル・ディレクトリの存在をチェックしてコマンド実行
$ cat sample.sh #!/bin/sh filePath="./dir1/file.sh" if [ -x $filePath ]; then ./$filePath else echo ファイル実行権限なし fi
$ ./sample.sh 処理中
dir1/file.sh は単にechoを実行しているだけです。
スポンサーリンク
-eと-xを組み合わせ
-eと-xを組み合わせてえ、ファイル存在チェックと実行権限チェックをするのも有効です。
下記がサンプルコードになります。
$ cat sample2.sh #!/bin/sh filePath="./dir1/dir2/file.sh" if [ -e $filePath ] && [ -x $filePath ]; then ./$filePath else echo ファイルなし fi
下記が実行結果になります。
$ ./sample2.sh 処理中
参考:chmodでパーミッションを-rwxrwxr-xに変更
参考:[シェル]findとchmodでディレクトリ以下のファイルのパーミッションを再帰的に変更
chmodでパーミッションを変更する記事を参考に載せました。
よろしければ参考にしてください。
findとの組み合わせはとても便利ですね。
スポンサーリンク