나는 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
내가 할 수 있기를 원하는 것은 다운로드한 파일을 다운로드하자마자 찾아서 스크립트의 다른 명령이나 기능을 사용하여 자동으로 미리 정의된 디렉터리로 이동하는 것입니다.
출력을 변수로 파이프하는 방법에 대한 몇 가지 스레드를 읽었지만 내 스크립트로 이를 수행하는 방법을 알 수 없습니다. 내가 읽은 주제는 다음과 같습니다.
- 쉘 스크립트 - 프로그램이나 함수의 출력을 변수로 파이프하는 방법은 무엇입니까? - Unix 및 Linux 스택 교환
- 쉘 스크립트 - 명령 출력을 변수에 할당하면 이상한 결과가 발생함 - Think Tank 101 - CC copyright 기반 Q&A 공유 플랫폼
- bash - 출력을 쉘의 변수로 리디렉션하는 방법은 무엇입니까? - 스택 오버플로
다음과 같은 내용으로 새 변수를 생성해 보았지만 작동하지 않는 것 같습니다.
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