인수보다 새로운 파일을 확인하는 스크립트, -nt 사용에 대한 도움말

인수보다 새로운 파일을 확인하는 스크립트, -nt 사용에 대한 도움말

인수로 제공된 파일보다 최신 디렉토리의 파일을 표시하는 스크립트를 만들려고 하는데 문제가 발생한 것 같습니다. 현재 나는 다음을 가지고 있습니다:

for f in *; do 
    if [["$f" -nt "$1"]]; then 
        echo "$f"
    fi 
done

그러나 이로 인해 반복되는 파일과 관련하여 명령을 찾을 수 없다는 오류가 계속 발생합니다. 이 스크립트의 문제를 어떻게 해결할 수 있나요?

답변1

주변에 공간이 필요합니다 [[.]]

for f in *; do
    if [[ "$f" -nt "$1" ]]; then
        echo "$f"
    fi
done

공백이 없으면 일련의 "명령을 찾을 수 없음" 오류가 발생합니다. 이는 쉘이 이름으로 명령을 찾았 [["$f"으나 찾을 수 없기 때문입니다. 실행하려는 명령은 입니다 [[.

대안

반복할 필요 없이:

find . -maxdepth 1 -newer "$1"

답변2

뒤에 공백이 필요 [[하고 앞에 공백이 하나 더 필요합니다 ]]. 이것은 [전통적으로 실제 실행 파일( /bin/[, 심볼릭 링크된 )인 의 이월입니다. 가 아닌 인수를 사용 /bin/test하여 평가되도록 하려면 공간이 필요했습니다 .[expression[expression

bash 키워드 이지만 [[비슷한 요구 사항이 있습니다.

[또한 일반적 으로 가능한 한 스크립트에서 POSIX 호환을 사용하는 것이 좋습니다 . [[표준이 아니므로 모든 POSIX 쉘에서 작동하지 않습니다.

관련 정보