2014-01-27 3 views

답변

2

사용 for 루프

str="http://example.com http://example2.com" 
for word in $str 
do 
    echo $word 
done 
2

자발적으로, 나는 grep하지만 read를 사용하지 것이다 :

EXAMPLE="http://example.com http://example2.com" 
read URL1 URL2 <<<"$EXAMPLE" 

<<< 구문은 그러나, 배쉬를 사용하고 있다고 가정합니다. 그렇지 않으면,이처럼해야 할 것 :

read URL1 URL2 <<EOF 
$EXAMPLE 
EOF 
2

다른 답변은 모두 훌륭한 있지만,이 문제를 피부하는 방법에는 여러 가지가 있습니다를, 그래서 여기에 또 다른입니다. 당신의 문자열 이후 :-)이 공백으로 구분하고, 쉘의 기본 분리 (IFS가)이 활용할 수있는 공간이 포함

mystr="http://example.com http://example2.com" 
set -- $mystr 
foo=$1 # http://example.com 
bar=$2 # http://example2.com 

(set-- 엄격히이 경우에 필요하지 않습니다, 어떤 이유로 문자열이 대시로 시작된 경우 몇 가지 어리석은 일이 일어나지 않도록합니다.)

2

이전 구문에 대한 대체 답으로서 다음 구문을 사용할 수 있습니다.이 구문은 모두 사용할 수 있어야합니다 표준 셸 :

EXAMPLE="http://example.com http://example2.com" 
URL1="${EXAMPLE%% *}" 
URL2="${EXAMPLE#* }" 

작동 방식에 대한 자세한 정보는 Bash/Dash 맨 페이지를 참조하십시오.

+0

그래, 기술적으로는이 방법이 효과적이지만, 다른 모든 답변에서 사용되는 'IFS'토큰 화에 의존하는 것이 더 쉽고 읽기 쉽습니다. :-) (구분자가 공백이 아니라면 적절하게'IFS '를 조정하는 것이 쉽다.) –

+0

나는 동의한다. 그러나 그들 모두는 그들의 용도가있다. 그것을 선물 할 수도 있습니다. :) 그러나 일부 로컬 작업을 수행하기 위해 IFS를 변경하는 것은 약간 추한 것이라고 주장 할 것입니다. – Dolda2000

+0

함수 내에서'local' (bash와 dash가 지원)을 사용하여 설정하는 것은 그렇게 추한 것은 아닙니다. –

관련 문제