파일이 로컬에 이미 존재하는 경우 컬을 사용하여 파일을 다운로드하지 마십시오.

파일이 로컬에 이미 존재하는 경우 컬을 사용하여 파일을 다운로드하지 마십시오.

나는 현재 컬을 사용하여 이 작업을 수행하고 있습니다.

curl https://example.com/file -o file

내 디렉토리에 이름의 파일이 이미 있는 경우 file이 명령은 해당 파일을 덮어씁니다. 대신 파일이 이미 존재한다는 오류 메시지가 반환되기를 원합니다.

컬만 사용해서 이런 작업을 할 수 있나요? 이 작업을 수행하는 플래그가 표시되지 않고 bash 스크립트에서 명령을 실행하지 않으므로 명령을 실행하기 전에 비교 연산자를 사용할 수 없습니다.

답변1

다음 테스트를 사용하여 디렉터리에 이름이 있는지 테스트할 수 있습니다 -e.

if [ -e "filename" ]; then
    echo 'File already exists' >&2
    exit 1
fi

curl -o "filename" "URL"

이 시점에서 스크립트를 종료하지 않으려면 다음을 수행하세요.

if [ -e "filename" ]; then
    echo 'File already exists' >&2
else
    curl -o "filename" "URL"
fi

이름이 일반 파일, 디렉터리, 명명된 파이프 또는 기타 유형의 파일 시스템 개체 이름인지 여부에 관계없이 이름이 존재하는 경우 테스트는 참입니다.

시스템을 확인하십시오 man test.

답변2

확인해 보시는 것을 적극 권장합니다이 답변-C -컬 옵션 에 관해서 . 기본적으로 다운로드를 재개합니다. 파일이 이미 완료된 경우 별도의 조치가 필요하지 않습니다. 복구 확인을 수행하기 위해 서버를 호출합니다.

관련 정보