내 웹 서버에서 파일을 다운로드하기 위한 작은 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