2013-06-23 65 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”;完成<<<“这是我的字符串”:“这是另一个字符串”' –