1

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

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做什么。

4

2 回答 2

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

于 2013-07-30T17:59:53.143 回答
1

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

于 2013-07-30T17:57:18.587 回答