*.shを使用して異なるディレクトリにある複数の.shファイルを実行する方法

*.shを使用して異なるディレクトリにある複数の.shファイルを実行する方法

.shディレクトリパターン内のすべてのファイルを実行できるシェルスクリプトを作成する必要があります。それは次のとおりです。

##!/bin/bash
sh /var/scripts/*/my_*.inc.sh

ただし、上記のスクリプトは1つのファイルのみを実行します。最初に発生したファイル(最後の変更日によって選択されたように見えます)は私のポイントではありません。ルールに一致するすべてのファイルを実行する必要があります。

ベストアンサー1

コードが機能しないのは、ファイル名のワイルドカードパターンが拡張されたときに発生するためです。

このモデルは次に拡張されます。リスト一致するパス名。スクリプトのコードはshこのリストを使用して呼び出します。これは、最初に一致する名前をスクリプトとして実行し、他の名前を次のように指定することを意味します。議論このスクリプトでは:

sh /var/scripts/dir/my_first.inc.sh /var/scripts/dir/my_second.inc.sh /var/scripts/dir/my_third.inc.sh

代わりに、一致する名前を繰り返すだけです。

#!/bin/sh

for name in /var/scripts/*/my_*.inc.sh; do
    sh "$name"
done

shこれは、一致する各名前が実行される必要がある(ない)スクリプトであると仮定しますbash。そのファイルが実行可能で正しい行を持っている場合は、上記のループのスクリプト呼び出しからそのファイルを削除してください#!shファイルが「ドットスクリプト」、つまりソースを提供する必要があるスクリプトである場合は、スクリプトが現在のスクリプトのコンテキストで実行されるようにするには、次のようにsh置き換えます。.

上記のスクリプトはどの機能も使用しないため、shscript()にすることができます。他のスクリプトが「ドットスクリプト」の場合、スクリプトを取得するには明らかに変更する必要があるか、別のインタプリタが必要な場合があります。#!/bin/shbash#!/bin/bash

おすすめ記事