명령에 변수 이름을 입력하면 wget이 실패합니다.

명령에 변수 이름을 입력하면 wget이 실패합니다.

내 웹 서버에서 파일을 다운로드하기 위한 작은 bash 스크립트가 있습니다. 명령줄을 통해 $File 변수를 전달한 다음 다음과 같이 wget 명령에 삽입했습니다.

File=${1}

wget -a /home/wgetlog.txt -nH -nd --accept=txt "http://192.168.1.21/files/$File/$File.txt"

./download.sh media 명령을 실행하면 로그 파일에 다음이 표시됩니다.

--2014-04-07 17:44:36--  http://192.168.1.21/files//.txt
HTTP request sent, awaiting response... 404 Not Found

변수를 나란히 전달하기 때문인가요? 구문이 정확합니까? 아니면 더 좋은 방법이 있을까요 :)

답변1

명령줄 인수를 사용하는 스크립트를 작성할 때는 주어진 인수를 실제로 확인해야 합니다.

예를 들어:

File=${1}
if [[ -z $File ]]
then
  echo "ERROR: file name required"
  exit
fi

echo wget -a /home/wgetlog.txt -nH -nd --accept=txt "http://192.168.1.21/files/$File/$File.txt"

추측컨대, 스크립트 이름이 "doit.sh"이고 이를 호출하는 경우:

doit.sh $File

$File이 명령줄 셸에 정의되어 있지 않으면 스크립트에 인수를 전달하지 않으므로 설명하는 방식으로 스크립트가 실패합니다.

실제 파일 이름으로 호출해야 합니다. 예를 들어

doit.sh fred

관련 정보