2016-10-25 1 views
1

예를 들어, getimage이라는 bash 스크립트가 있습니다. 스크립트에서 나는이 : 나는 터미널에서 bash getimage를 입력하면, 그것은 사진을 다운로드 할bash 스크립트의 변수를 wget의 url에 대응시키는 방법

wget http://www.example.com/images/1.jpg 

.

는하지만 내가 원하는 터미널에 bash getimage 2 또는 bash getimage 3 등을 입력하고 각각 2.jpg 또는 3.jpg을 다운로드하는 것입니다.

기본적으로 터미널에 숫자 (bash getimage number)를 입력하고 wget http://www.example.com/images/number.jpg에 해당하도록하고 싶습니다.

+1

:

그래서 같이 호출 다음 명령을 실행이 chmod +x getimage으로 실행하고합니다. 그 결과, 스크립트에서'$ 1','$ 2' 등으로 참조되는 위치 매개 변수를 사용할 수 있습니다. 단지 $ 1만이 필요하고 명령을'wget '으로 바꿀 수 있습니다 http : //www.example.com/images/$1.jpg " – Aaron

+1

또한 'bash getimage'를 호출하는 대신 [shebang] (https://en.wikipedia.org/wiki/Shebang_ (Unix))을 스크립트는'getimage'를 호출하는 것과 똑같습니다. – Aaron

+0

고마워, 아론 –

답변

2

Aaron이 의견에서 언급했듯이 스크립트에 $1 또는 $2 등으로 외부 변수를 지정해야합니다.

이 작업을 수행하는 방법은

wget http://www.example.com/images/"$1".jpg

그런 다음 bash getimage 1

로 스크립트를 실행 - 이것도 (I 용의자로) 당신은, 뭐하고, 루프에서 wget하려면

for i in {1..10} ; do bash getimage "$i" ; done 

또는 명령 줄에서

for i in {1..10} ; do wget http://www.example.com/images/"$i".jpg ; done 
+0

고마워요! –

2

는 여기에 내가 무엇을 할 것이라고입니다 :

#!/bin/bash 
image_name=${1-1} 
wget "http://www.example.com/images/$image_name.jpg" 

스크립트는 getimage x로 호출 할 것입니다. x을 생략하면 1이 기본값으로 선택됩니다.

첫 줄은 shebang입니다. 쉘은 지정된 실행 파일 /bin/bash을 사용하여 스크립트를 실행합니다.

두 번째 줄은 image_name 변수를 정의하고 식의 결과를 할당합니다. 이 표현식은 정의 된 경우 $1 (스크립트에 전달 된 첫 번째 매개 변수) 또는 1 중 하나를 반환하는 매개 변수 확장입니다. 이 경우보기가 어렵지만 구문은 ${variable-default}입니다. 여기서 variable은 원하는 값을 갖는 변수 이름이고, default은 해당 변수가 정의되지 않은 경우 사용되는 기본값입니다.

세 번째 줄은 사용자의 명령입니다. 여기서 1은 정적 변수 image_name에 대한 참조로 바뀌 었습니다. image_name에 공백이 포함 된 경우 ""이 추가되어 두 개의 개별 매개 변수로 wget으로 이해 될 수있는 두 부분으로 된 URL이 손상됩니다. 그러나 ''을 사용하지 마십시오. 문자열에 포함 된 $variable은 해당 값으로 확장되지 않습니다.

2

원하는 스크립트는 다음과 같습니다.

#!/usr/bin/env bash 
wget "http://www.example.com/images/${1}.jpg" 

첫 번째 줄은 오두막 스크립트에서 실행하는 프로그램을 알려주는 shebang라고합니다.이 경우 우리는 현재 환경에서의 bash의 기본 버전을 찾기 위해 env 프로그램을 사용합니다.

두 번째 줄에서는 단순히 wget 명령을 실행하지만 변수 $1을 전달합니다. 이 변수는 positional parameter이라는 특수 변수이며,이 경우 스크립트에 전달 된 첫 번째 인수입니다. 당신은 당신이 스크립트에서 참조 할 수있을 것입니다 스크립트에 매개 변수를 전달 할 수 있도록하려는

./getimage 1 
./getimage 2 
etc.