2014-01-27 45 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" 

<<<语法假设您正在使用bash,但是。否则,你不得不做这样的:

read URL1 URL2 <<EOF 
$EXAMPLE 
EOF 
2

其他的答案都是伟大的,但也有很多方法对皮肤这个问题,所以这里的另一个。 :-)由于您的字符串是用空格分开的,和你的shell的默认分隔符(IFS)包括空间,你可以利用这一点:

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

set--没有严格要求在这种情况下,但它防止了一些愚蠢的事情发生,如果你的字符串碰巧出于某种原因破折号。)

2

作为对我以前的一个altnerative答案,你也可以使用下面的语法,应该可用于所有标准外壳:

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

您可以查看Bash/Dash联机帮助页以获取有关其工作方式的更多信息。

+0

是的,从技术上讲,它可以工作,但它可能更容易,更可读性依赖所有其他答案中使用的“IFS”标记。 :-)(如果分隔符不是空格,则很容易相应地调整'IFS'。) –

+0

我同意,但它们都有其用途。不妨展示一下吧。 :)然而,我会争辩说,为了做一些本地操作而改变'IFS'有点难看。 – Dolda2000

+0

如果你正在使用'local'(由bash和破折号支持)在一个函数中设置它,这并不是那么难看。 –