2014-01-27 54 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和破折號支持)在一個函數中設置它,這並不是那麼難看。 –