파일을 찾는 조건

파일을 찾는 조건

파일을 찾고 파일이 발견되면 전체 경로를 변수에 저장하는 스크립트를 작성하려고 합니다. 현재 버전:

if [[ -n FOUND_PATH=$(find "$PATH" -name "file.exe") ]]; then
    echo "Found, full path: "$FOUND_PATH
else
    echo "Not found."
fi

[[ -n ]]파일이 실제로 발견되지 않고 FOUND_PATH실제로 비어 있더라도 표현식은 true로 평가됩니다. 내가 뭘 잘못했나요?

편집하다:

현재 겪고 있는 문제를 설명하기 위해 이 코드는 다음과 같습니다.

find "$PATH" -name "file.exe"

FOUND_PATH=$(find "$PATH" -name "file.exe")

if [[ -n "$(FOUND_PATH)" ]]; then
    echo "Found, full path: "$FOUND_PATH
else
    echo "Not found."
fi

just 를 반환 Found, full path:하므로 첫 번째 줄은 전혀 아무것도 출력하지 않지만 나중에 세 번째 줄에서 비어 있지 않은 문자열인지 확인하면 비어 있지 않은 것으로 평가됩니다!

답변1

Bash에서의 할당은 C와 같은 일부 결과를 제공하지 않습니다. 당신은 이것을 해야 합니다:

FOUND_PATH=$(find "$PATH" -name "file.exe")
if [[ -n "$FOUND_PATH" ]]; then
    echo "Found, full path: $FOUND_PATH"
else
    echo "Not found."
fi

그리고 $FOUND_PATH가 첫 번째 매개변수의 큰따옴표 사이에 있는지 확인하세요 echo.

$PATH가 단일 디렉터리가 아니지만 예를 들어 /usr/bin:/bin첫 번째 줄을 다음과 같이 변경할 수 있는 경우:

FOUND_PATH=$(find $(echo "$PATH" | sed "s/:/ /g" ) -name "file.exe")

관련 정보