網(wǎng)上有很多 shell script 讀文本文件的例子,但是都沒(méi)有講出故事的全部,只說(shuō)了一半。舉個(gè)例子,比如從一個(gè) testfile 文件中讀取如下格式的文本行:
$ vi readfile
#!/bin/sh
testfile=$1
while read -r line
do
echo $line
done $testfile
$ chmod +x readfile
$ ./readfile testfile
ls -a -l /bin | sort
ls -a -l /bin | sort | wc
ls -a -l | grep sh | wc
ls -a -l
ls -a -l | sort | wc
如果想要輸出 testfile 文件原有的格式,把每行(作為整體)原封不動(dòng)的打印出來(lái)怎么辦?這時(shí)需要指定 IFS 變量,告訴 shell 以 "行" 為單位讀取。
$ vi readfile
#!/bin/sh
IFS=""
testfile=$1
while read -r line
do
echo $line
done $testfile
$ ./readfile testfile
ls -a -l /bin | sort
ls -a -l /bin | sort | wc
ls -a -l | grep sh | wc
ls -a -l
ls -a -l | sort | wc
#!/bin/sh
testfile=$1
x=`wc -l $testfile |awk '{print $1}'`
i=1
while [ $i -le $x ]
do
echo "`head -$i $testfile | tail -1`"
i=`expr $i + 1`
done