任何人都可以解释使用read i
的部分。 i
来自哪里。
scp -i ~/.ssh/id_rsa.sample gaara@stuid.student.com:ready/$2/*.zip ./$2 > slate.out 2>&1
ls -1 $2/* > curr.lst 2>/dev/null
while
read i
do
if
test -e ../done/"$i"
then
diff "$i" ../done/"$i" >/dev/null 2>&1
if
test $? -eq 0
then
rm "$i"
fi
fi
done < curr.lst
答案 0 :(得分:4)
read
的这种语法通常用于处理文件中的多行。让我们通过省略内循环来简化:
while
read i
do
# Process i
done < curr.lst
'while x do;完成'语法非常基本且易于理解,但添加I / O重定向可能会令人困惑。在< curr.lst
之后添加done
时,意味着“将此文件的内容用作stdin
作为条件。因此,如果您现在省略循环,则得到:
read i < curr.lst
现在很清楚read
正在从curr.lst
获取输入并将变量i
设置为每行的内容。因此,该代码块基本上意味着“将curr.lst
的每一行作为变量i
处理,其中包含循环内的代码。
答案 1 :(得分:3)
“read”,根据手册页(shell中的类型man page
),从文件描述符中读取。
在你的代码中,为“curr.lst”中的每一行创建循环,这些循环放在变量$i