標籤:style http color 使用 os io strong 檔案
Linux shell 讀取一行
方法一
通過指定IFS--Internal Field Separator
,IFS
預設情況下是<space><tab><newline>
,可以下指令碼中設定IFS
值
DEMO 1
$cat t1.txt abcfd $cat test_IFS.sh #! /bin/shIFS="c"for LINE in `cat t1.txt`do echo $LINEdone$sh test_IFS.sh abfd
這裡需要讀取一行只需將IFS="\n"
設定為分行符號即可。
DEMO2
$cat t1.txt a bc d
不設定IFS
$ cat test_IFS.sh #! /bin/sh#IFS="\n"for LINE in `cat t1.txt`do echo $LINEdone$sh test_IFS.sh abcd
設定IFS="\n"
$ cat test_IFS.sh #! /bin/shIFS="\n"for LINE in `cat t1.txt`do echo $LINEdone$sh test_IFS.sh a bc d
這樣就可以達到讀取一行的目的了
方法2
利用read
命令,從標準輸入讀取一行,根據IFS
進行切分並相應的變數賦值,這裡為了我們故意將IFS
設定為&
,來進行示範
DEMO3
$cat test_read.sh #! /bin/shIFS="&"printf "Enter your name, rank, serial num:"read name rank sernoprintf "name=%s\nrank=%s\nserial num=%s" $name $rank $serno $sh test_read.sh Enter your name, rank, serial num:zk&1&123name=zkrank=1serial num=123
所以我們知道read
每次是讀一行,因此使用read
命令就好了
DEMO4
$cat readline_1.sh #! /bin/shcat t1.txt | while read LINEdo echo $LINEdone$sh readline_1.sh a bc d
這裡是通過檔案重新導向給read處理
方法3
用read
去讀取檔案重新導向
DEMO5
$cat readline_2.sh #! /bin/shwhile read LINEdo echo $LINEdone < t1.txt$sh readline_2.sh a bc d
推薦使用方法3