シェルスクリプトで2つのfindコマンド出力を使用してエクスポートされた変数を渡す方法

シェルスクリプトで2つのfindコマンド出力を使用してエクスポートされた変数を渡す方法

スクリプトの一部として find コマンドがあり、以下のように値を変数としてエクスポートします。

export value1="'find /app/new1 -name '*service.sh*'"

テスト後、いくつかのホストでディレクトリが次のようになることに気づきました。

/sbclocal/app/new1

両方を同じ値で確認して渡すにはどうすればよいですか?

このスクリプトは私が見つかったときに実行され、後で停止または開始されます。

ベストアンサー1

問題の私の理解が正確であれば、所望の状態を達成する方法はほとんどありません。

  1. find複数のパス指定をサポートします。だからこう言うのはあまり問題ではありません。

    export value1="$(find /app/new1 /sbclocal/app/new1 -name '*service.sh*')"
    

    ディレクトリが見つからない場合はエラーメッセージが生成されますが、(アクセス方法によっては)通常スクリプトに影響を与えない可能性があります。

  2. 両方のコマンドを値として渡します。

    export value1="$(find /app/new1 -name '*service.sh*' && find /sbclocal/app/new1 -name '*service.sh*')"
    

    このオプションは問題に近い答えを提供しますが(両方のコマンドを同じ変数に渡す)、より良い解決策ではないようです。

  3. 確認方法:

    export value1="$(for dir in /app/new1 /sbclocal/app/new1; do [ -d $dir ] && find $dir -name '*service.sh*'; done)"
    

おすすめ記事