Linux之文件和目录操作

dirname $0,取得当前执行的脚本文件的父目录

cd dirname $0,进入这个目录(切换当前工作目录)

pwd,显示当前工作目录(cd执行后的)

由此,我们获得了当前正在执行的脚本的存放路径。

bash循环读入文件的每一行并处理

cat afile | while read oneline
do
echo $oneline
done
这只是个简单例子,把文件afile的每一行读入,然后显示出来。

也可以这样(如果行中有空格或者tab则无法使用此方法,不好意思啊,呵呵):
for i in cat afile
do
echo $i
done

逐行处理文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ 通过read命令完成
cat data.dat | while read line
do
echo "File:${line}"
done
while read line
do
echo "File:${line}"
done < data.dat
$ 使用awk命令完成
cat data.dat | awk '{print $0}'
cat data.dat | awk 'for(i=2;i<NF;i++) {printf $i} printf "\n"}'
$ 使用for var in file 命令完成
for line in $(cat data.dat)
do
echo "File:${line}"
done
for line in `cat data.dat`
do
echo "File:${line}"
done

补充:

如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.

如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.

可以通过把IFS设置为换行符来达到逐行读取的功能.