So übergeben Sie eine Exportvariable mit zwei Find-Befehlsausgaben in einem Shell-Skript

So übergeben Sie eine Exportvariable mit zwei Find-Befehlsausgaben in einem Shell-Skript

Ich habe einen Find-Befehl als Teil eines Skripts und exportiere die Werte in die Variable wie unten

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

Nach dem Testen wurde mir klar, dass das Verzeichnis auf einigen Hosts wie unten dargestellt unterschiedlich ist.

/sbclocal/app/new1

Wie überprüfe ich beides und übergebe es an denselben Wert?

wenn ich dieses Skript finde und es später mit Stopp oder Start ausführe.

Antwort1

Wenn ich die Frage richtig verstehe, gibt es mehrere Möglichkeiten, einen gewünschten Zustand zu erreichen.

  1. findunterstützt die Angabe mehrerer Pfade. Es ist also keine große Sache, es so auszudrücken:

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

    Dies erzeugt eine Fehlermeldung, wenn eines der Verzeichnisse fehlt, hat aber (je nach Ihrer Methode) möglicherweise keine generellen Auswirkungen auf Ihr Skript.

  2. Übergeben Sie zwei Befehle an den Wert:

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

    Diese Option liefert eine Antwort, die Ihrer Frage näher kommt (Übergeben von zwei Befehlen an dieselbe Variable), sieht aber nicht wie eine bessere Lösung aus.

  3. Vorgehensweise mit Schecks:

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

verwandte Informationen