![쉘 스크립트에서 두 개의 find 명령 출력을 사용하여 내보낸 변수를 전달하는 방법](https://linux55.com/image/154868/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20find%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%82%B4%EB%B3%B4%EB%82%B8%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%A0%84%EB%8B%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
스크립트의 일부로 find 명령이 있고 아래와 같이 값을 변수로 내보냅니다.
export value1="'find /app/new1 -name '*service.sh*'"
테스트 후 몇몇 호스트에서 디렉토리가 다음과 같다는 것을 깨달았습니다.
/sbclocal/app/new1
두 가지를 모두 동일한 값으로 확인하고 전달하려면 어떻게 해야 합니까?
이 스크립트는 내가 찾을 때 실행되고 나중에 중지되거나 시작됩니다.
답변1
문제에 대한 나의 이해가 정확하다면 원하는 상태를 달성하는 방법은 거의 없습니다.
find
여러 경로 지정을 지원합니다. 그러므로 이렇게 말하는 것은 별 문제가 아닙니다.export value1="$(find /app/new1 /sbclocal/app/new1 -name '*service.sh*')"
디렉토리가 누락된 경우 오류 메시지가 생성되지만 (접근 방법에 따라) 일반적으로 스크립트에 영향을 미치지 않을 수 있습니다.
두 명령을 모두 값으로 전달합니다.
export value1="$(find /app/new1 -name '*service.sh*' && find /sbclocal/app/new1 -name '*service.sh*')"
이 옵션은 문제에 더 가까운 답변을 제공하지만(두 명령을 동일한 변수에 전달) 더 나은 해결책은 아닌 것 같습니다.
확인 방법:
export value1="$(for dir in /app/new1 /sbclocal/app/new1; do [ -d $dir ] && find $dir -name '*service.sh*'; done)"