1

我是 bash shell 的新手。我对下面的脚本感到困惑。

#!/bin/bash

input=name.csv

while IFS=',' read -r Family_name First_name

do

 echo $Family_name
 echo $First_name

done < $input

直觉上,我认为这done是某种边界标记,告诉你该while领域已经结束。

这里它表明done可以从变量中获取数据。那么循环done中的含义/功能是什么?while谢谢。

4

3 回答 3

5

直觉上,我认为 done 是某种边界制造者,它告诉你 while 字段结束了。

正确的; done结束一个while循环(或for循环或类似的)。

这里它表明 done 可以从变量中获取数据。

不; < $input(含义< name.csv)是应用于整个while循环的重定向。done因此,从 name.csv 获取输入的是整个 while 循环,而不是具体的循环。

于 2020-05-16T17:08:04.530 回答
1

直觉上,我认为 done 是某种边界制造者,它告诉你 while 字段结束了。

确实如此。done当然是while循环本身的一部分。语法是:

   while list-1; do list-2; done

这里它表明 done 可以从变量中获取数据

输入重定向<不仅仅特定于done关键字;而是针对整个循环,因此从文件中读取的任何语句中读取的任何输入list-1list-2将从文件中读取的任何输入$input

于 2020-05-16T17:09:42.550 回答
-2

在我的一点理解中, bash 中的 > 表示写入文件,而 < 表示从文件中读取,所以基本上你基本上是在告诉循环命令从其值为 name.csv 的输入变量中读取

于 2020-12-15T18:16:54.837 回答