2

我正在尝试将两个字符串传递给 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循环,感谢任何帮助。

4

4 回答 4

6

<重定向运算符仅适用于文件。根据您的要求使用for loop

#!/bin/bash


for x in "var1" "var2"
do
   echo $x
done
于 2013-06-23T06:30:12.123 回答
4

要将字符串传递给您的while循环,您需要使用herestring <<<表示法。

$ while read line; do 
    echo "$line"
done <<< "This is my test line"
This is my test line
于 2013-06-23T06:39:54.713 回答
2
printf "%s\n" "var1" "var2" |
while read line
do  
    echo "successful: $line"
done

printf命令在一行上单独回显每个参数。

于 2013-06-23T06:37:33.907 回答
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
于 2013-06-23T06:33:04.443 回答