スポンサーリンク

-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との組み合わせはとても便利ですね。

スポンサーリンク