2013-06-23 68 views
1

我想將兩個字符串傳遞給while循環,但我忘記了語法請幫助我。 這就是我trying-將字符串傳遞給while循環

#!/bin/bash 
while read line 
do 
    echo "successful" 
done < "var1" "var2" 
exit 

我知道我在這裏做得不對,我用來傳遞字符串while循環,但我忘了語法。請幫我在這裏。

我所知道的 -

#!/bin/bash 
while read line 
do 
    echo "successful" 
done < "file_containing_var1_and_var2" 

,但我想傳遞一個字符串,而不是文件來while循環,任何幫助表示讚賞。

回答

5

<重定向操作符僅適用於文件。爲您的要求使用for loop

#!/bin/bash 


for x in "var1" "var2" 
do 
    echo $x 
done 
1

可以通過管道進入一個while循環:

#!/bin/bash 
echo "var1" "var2" | while read line 
do 
    echo "successful: $line" 
    set "$line" 
    echo "v1: $1 v2: $2" 
done 

輸出

successful: var1 var2 
v1: var1 v2: var2 
+0

感謝perreal,jonathan和DevZero,你的回答給我的保險庫添加了新的東西。謝謝你的時間。 – user2118349

+0

如果$ line恰好以連字符開頭,'set - $ line'(未加引號) –

2
printf "%s\n" "var1" "var2" | 
while read line 
do 
    echo "successful: $line" 
done 

printf命令相呼應,在每個參數線路本身。

4

要將字符串傳遞到您的while循環,您需要使用herestring <<<表示法。

$ while read line; do 
    echo "$line" 
done <<< "This is my test line" 
This is my test line 
+0

嗨JS,這正是我想要的。你能指出我如何在這裏傳遞多個字符串。 – user2118349

+0

@ user2118349你最好使用DevZer0建議的'for loop',但是如果你必須這麼做,你可以這樣做:'$ while IFS =:read string1 string2;做printf「%s \ n%s \ n」「$ string1」「$ string2」;完成<<<「這是我的字符串」:「這是另一個字符串」' –