문자열을 "http://example.comhttp://example2.com"두 가지 변수로 어떻게 구분할 수 있습니까?어떻게이 문자열을 구문 분석합니까?
저는 리눅스가 처음이에요. 감사합니다. 모든 도움을 주실 수 있습니다.
문자열을 "http://example.comhttp://example2.com"두 가지 변수로 어떻게 구분할 수 있습니까?어떻게이 문자열을 구문 분석합니까?
저는 리눅스가 처음이에요. 감사합니다. 모든 도움을 주실 수 있습니다.
사용 for
루프
str="http://example.com http://example2.com"
for word in $str
do
echo $word
done
자발적으로, 나는 grep
하지만 read
를 사용하지 것이다 :
EXAMPLE="http://example.com http://example2.com"
read URL1 URL2 <<<"$EXAMPLE"
<<<
구문은 그러나, 배쉬를 사용하고 있다고 가정합니다. 그렇지 않으면,이처럼해야 할 것 :
read URL1 URL2 <<EOF
$EXAMPLE
EOF
다른 답변은 모두 훌륭한 있지만,이 문제를 피부하는 방법에는 여러 가지가 있습니다를, 그래서 여기에 또 다른입니다. 당신의 문자열 이후 :-)이 공백으로 구분하고, 쉘의 기본 분리 (IFS
가)이 활용할 수있는 공간이 포함
mystr="http://example.com http://example2.com"
set -- $mystr
foo=$1 # http://example.com
bar=$2 # http://example2.com
(set
후 --
엄격히이 경우에 필요하지 않습니다, 어떤 이유로 문자열이 대시로 시작된 경우 몇 가지 어리석은 일이 일어나지 않도록합니다.)
이전 구문에 대한 대체 답으로서 다음 구문을 사용할 수 있습니다.이 구문은 모두 사용할 수 있어야합니다 표준 셸 :
EXAMPLE="http://example.com http://example2.com"
URL1="${EXAMPLE%% *}"
URL2="${EXAMPLE#* }"
작동 방식에 대한 자세한 정보는 Bash/Dash 맨 페이지를 참조하십시오.
그래, 기술적으로는이 방법이 효과적이지만, 다른 모든 답변에서 사용되는 'IFS'토큰 화에 의존하는 것이 더 쉽고 읽기 쉽습니다. :-) (구분자가 공백이 아니라면 적절하게'IFS '를 조정하는 것이 쉽다.) –
나는 동의한다. 그러나 그들 모두는 그들의 용도가있다. 그것을 선물 할 수도 있습니다. :) 그러나 일부 로컬 작업을 수행하기 위해 IFS를 변경하는 것은 약간 추한 것이라고 주장 할 것입니다. – Dolda2000
함수 내에서'local' (bash와 dash가 지원)을 사용하여 설정하는 것은 그렇게 추한 것은 아닙니다. –
어떤 종류의 변수입니까? 껍질? 펄? 루비? 자바? PHP? –
@ ChrisJester-Young Shell – Sedulous