쉘 스크립트에서 두 개의 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)"
    

관련 정보