2

/mnt/sda bc d... にシェル スクリプトが存在するかどうかをチェックするスクリプトを作成しようとしています。スクリプトが見つかったら、それを実行する必要があります。これが私がこれまでに持っているものです:

for x in a1 a2 b1 b2 c1 c2 d1 d2 e1 e2 f1 f2; do /mnt/sd$x/1_drive_check.sh; done

これは問題ありませんが、実際には各マウント ポイントでスクリプトを実行しようとします。通常は気にしませんが、コンソールに最小限の情報を表示する必要があります。

ファイルが存在するかどうかを確認するコマンドについて知っています。

if [ -f 1_drive_check.sh ] then
echo 1_drive_check.sh exists!
fi

方法がわからないのは、2つをマージして、1_drive_check.shが/ sda1またはsda2またはsdb1などに存在するかどうかを確認してから実行することです。ホットグルーガンで疲れましたが、火傷を負いました。

参考までに、私は定期的に VBS を使用することに慣れているため、これについてはまったくの初心者です。

4

2 に答える 2

2

ソリューションに加えて、次のfor ...; do if [ ... ]; then /mnt/sd$x/1_drive_check.sh; fi;doneことができます。

find /mnt/ -maxdepth 2 -name '1_drive_check.sh' -executable -exec {} \;

... ドライブを手動で追加する手間を省きます。

于 2013-03-04T20:16:54.383 に答える
1

ちょっとした考え...

for script in /mnt/sd[a-f]{1,2}/1_drive_check.sh
do
    $script
done

実際に存在するスクリプトのみを検索します。

于 2013-03-04T20:17:54.437 に答える