Как передать переменную экспорта с двумя результатами команды find в скрипте оболочки

Как передать переменную экспорта с двумя результатами команды 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)"
    

Связанный контент