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

관련 정보