>

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

할 수있는 것은 다운로드 한 파일을 다운로드 한 직후에 대상으로 지정하고 스크립트에서 추가 명령 또는 기능을 사용하여 미리 정의 된 디렉토리로 자동 이동하는 것입니다.

출력을 변수에 파이프하는 방법에 대한 몇 가지 스레드를 읽었지만 스크립트를 사용하여 수행하는 방법을 해결할 수 없습니다. 이것들은 내가 읽은 스레드입니다 :

  • shell script-프로그램 또는 함수의 출력을 변수로 파이프하려면 어떻게해야합니까? -유닉스 및 리눅스 스택 교환
  • 쉘 스크립트-명령 출력을 변수가 이상한 결과를 낳습니다-Unix&linux Stack Exchange
  • bash-출력을 a로 리디렉션하는 방법 쉘에서 변수? -스택 오버플로

다음과 같은 변수로 새 변수를 만들려고했지만 작동하지 않는 것 같습니다 :

NEWFILE=$(wget $FILEURL)

이 함수 호출을 수정하여 스크립트 변형을 시도했습니다.

NEWFILE=$(filedl)  <-이것도 아무것도하지 않은 것 같습니다.

마지막으로, 나는 명령을 함수 밖으로 옮기고 위에서 설명한 변수 정의 시도의 변형으로 각 명령을 나열했습니다. 여전히 방법을 알 수 없었습니다.

여전히 쉘 스크립팅에 익숙하지 않아서 분명한 것을 놓치면 사과드립니다.

  • 답변 # 1

    파일을 변수로 캡처하지 않고, 모든 것을 불필요하게 메모리에 넣는 대신 wget 를 사용하십시오 --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
    
    

관련 자료

  • 이전 fedora - Linux에서 USB 장치의 플러그를 뽑았다가 다시 꽂을 수 있습니까?
  • 다음 logs - Apache는 error_log의 경로를 어떻게 해결합니까?