循环结束时“完成< $ var”有什么作用?

时间:2013-07-30 17:54:23

标签: bash shell

只是一个简单的问题 - 我想知道以下代码在做什么:

nlwd="$PWD/NLWD.txt"
cat /dev/null > $nlwd
echo "Enter filename to process:"
read name

while read line
do
uid="$(echo $line | cut -d, -f1)"
echo "$uid" | grep [0-9] >> $nlwd
done < $name

特别是,我想知道done < $name正在做什么。

2 个答案:

答案 0 :(得分:1)

这是一个输入重定向。 while循环(以及while循环中的每个命令,特别是read)将从$name命名的文件中获取其标准输入。

答案 1 :(得分:1)

它采用文件名,逐行读取该文件,并对每行进行处理。

<是输入重定向,这意味着循环从$name获取输入。

例如:

while read LINE
do
  echo $LINE
done < $name

...基本上与:

相同
cat $name

在回复您的评论时,cat /dev/null > $nlwd只会清空文件的内容。这一次,它使用>输出重定向来获取/dev/null(这是Linux的黑洞文件)的内容,并将该空白输出到由$nlwd变量表示的文件中。这是一个更简单的例子:

$> echo "something" > something.txt
$> cat something.txt 
something
$> cat /dev/null > something.txt 
$> cat something.txt 
$>

进一步阅读:http://en.wikipedia.org/wiki//dev/null