다운로드 스크립트의 출력을 자동으로 찾는 방법

다운로드 스크립트의 출력을 자동으로 찾는 방법

나는 URL을 사용하여 파일을 다운로드할 수 있는 매우 기본적인 스크립트를 작성했습니다. 이것은 내 스크립트입니다.

#!/bin/sh

# A script that downloads a file based on url

function filedl() {
  echo "What is the url for the file?"
  read FILEURL
  wget $FILEURL
  echo "Download complete"
}

filedl

내가 할 수 있기를 원하는 것은 다운로드한 파일을 다운로드하자마자 찾아서 스크립트의 다른 명령이나 기능을 사용하여 자동으로 미리 정의된 디렉터리로 이동하는 것입니다.

출력을 변수로 파이프하는 방법에 대한 몇 가지 스레드를 읽었지만 내 스크립트로 이를 수행하는 방법을 알 수 없습니다. 내가 읽은 주제는 다음과 같습니다.

다음과 같은 내용으로 새 변수를 생성해 보았지만 작동하지 않는 것 같습니다.

NEWFILE=$(wget $FILEURL)

또한 수정된 함수 호출을 사용하여 스크립트를 변형해 보았습니다.

NEWFILE=$(filedl)<-- 이것도 별거 아닌 것 같습니다.

마지막으로 명령을 함수 밖으로 옮기고 위에서 설명한 변수 정의 시도의 변형과 함께 각 명령을 나열했습니다. 나는 아직도 무엇을 해야할지 모르겠습니다.

저는 쉘 스크립팅을 처음 접했기 때문에 분명히 알아야 할 내용이 누락된 경우 사과드립니다.

답변1

변수에 파일을 캡처하여 불필요하게 전체 파일을 메모리에 넣는 대신 wget's --output-document/ -O플래그와 다음 두 변형 중 하나를 사용하십시오.

wget -O /path/to/file ... http://example.com/foobar
wget -O - ... http://example.com/foobar > /path/to/file

... /path/to/file원하는 경로 + 파일 이름이 있는 곳입니다. (그리고 ...사용할 수 있는 다른 플래그나 매개변수도 마찬가지입니다.)

또는 다운로드한 파일의 기본 이름을 유지하려면 --directory-prefix또는 를 사용하여 -P파일을 저장할 디렉터리를 지정하면 됩니다.

wget -P /some/path ... http://example.com/foobar

관련 정보