我有以下shell脚本来读取文件的前三行并将它们打印到屏幕 - 它无法正常工作,因为它打印出2,3,4行而不是行1,2,3 - 我在做什么错了?
exec 6< rhyme.txt
while read file <&6 ;
do
read line1 <&6
read line2 <&6
read line3 <&6
echo $line1
echo $line2
echo $line3
done
exec 6<&-
Run Code Online (Sandbox Code Playgroud)
感谢您的回答 - 我知道head命令但是想要使用读取和文件描述符来显示前三行
Ben*_*ela 11
您还可以组合head和while命令:
head -3 rhyme.txt |
while read a; do
echo $a;
done
Run Code Online (Sandbox Code Playgroud)
它读取第一行
while read file <&6 ;
Run Code Online (Sandbox Code Playgroud)
它读取第2行,第3行和第4行
read line1 <&6
read line2 <&6
read line3 <&6
Run Code Online (Sandbox Code Playgroud)
如果你想阅读前三行,请考虑
$ head -3 rhyme.txt
代替.
更新:
如果你想read
单独使用,那么就省略while
循环并做到:
exec 6< rhyme.txt
read line1 <&6
read line2 <&6
read line3 <&6
echo $line1
echo $line2
echo $line3
exec 6<&-
Run Code Online (Sandbox Code Playgroud)
或者循环:
exec 6< rhyme.txt
for f in `seq 3`; do
read line <&6
echo $line
done
exec 6<&-
Run Code Online (Sandbox Code Playgroud)