我的脚本非常简单:
$ cat $$.sh
#!/bin/sh -x
VAR="one two
three four"
for i in $VAR ; do
echo $i
done
$
Run Code Online (Sandbox Code Playgroud)
运行输出:
$ sh -x $$.sh
+ VAR='one two
three four'
+ for i in '$VAR'
+ echo one
one
+ for i in '$VAR'
+ echo two
two
+ for i in '$VAR'
+ echo three
three
+ for i in '$VAR'
+ echo four
four
$
Run Code Online (Sandbox Code Playgroud)
看起来它正在寻找一个空间,我需要它来寻找换行符
如果您逐行读取多行,则while read循环是执行此操作的常用方法:
VAR="one two
three four"
while IFS='' read -r i ; do
echo "$i"
done <<< "$VAR"
Run Code Online (Sandbox Code Playgroud)
这会产生:
one two three four
请注意,在此示例中,while循环$VAR使用bash here-string重定向从变量中获取输入.但这可以很容易地从文件或管道重定向.