分类: LINUX
2009-04-24 10:05:24
Q1. 曾经面试的时候被问到一个问题, 说
while read line ; do
echo $line ;
done < ./a.txt
失败, 会是什么原因, 当时觉得不太可能, 就回答了“我用的时候没有碰到过这种情况”。 前段在写一个脚本的时候, 确实遇到了所谓的while read 失败, 原因是我读入的文件是在win下用dos格式保存的文本, 所以每行结束都带有一个\r字符, 这个字符在linux/unix环境下的作用是“回到一行的开始”, 如果再对$line做相关的字符串操作的话(比如字符串连接), 得到的结果可能会让人迷惑... 所以当把win下编译的文本用在linux/unix环境时, 最好做一下格式转换
Q2. 2009-08-01更新:
# cat ur_file
1234 abcd
5678 efgh
# vi t3.sh
#!/bin/bash
while read t1 t2 ; do
echo $t1 $t2 ; awk '{ print $0 }'
done < ./ur_file
#./t3.sh
1234 abcd
5678 efgh
# sh -x ./t3.sh 发现只read 了一次
Q3.
# seq 10 > file
# while read line ; do
> echo $line
> dd &>/dev/null
> done < ./file
1
为什么这里只打印第一行呢?