linux shell 逐行讀取檔案行,
讀取檔案行
for
IFS=$'\n'for line in `ls -l`do (( count++ ))doneecho $count
注意:
for讀取時,自動按空格作為間隔符。因此需要將IFS定義為按分行符號分隔
ls -l > forout.logmaxlength=$(wc -l < forout.log)for i in `seq $maxlength`do (( count++ ))done < forout.logecho $count
注意:
wc 需要使用重新導向方式,否則輸出的格式是”行數 檔案名稱”。
while
while read line do (( count++ )) done < readFile.log echo $count
注意
如果while條件運算式沒有寫read,則會輸出line,但最後結果是一樣的
cat readFile.log | while read line do #(( count++ )) echo "$line" done #echo $count
注意
最後輸出的count是空值,感覺是因為一個管道符產生了一個子進程,而子進程的變數無法返回父進程
time
ime命令 用於 列印出一條命令或一個程式的執行時間
time 命令以秒為單位將一條命令執行期間所用的時間、系統時間和 time 命令的執行時間列印在標準錯誤中。
用法:time [ -p ] Command [ Argument … ]
time命令結果有三行組成:real、user和sys。我們這裡用的都是real值,CPU用時被劃分為user和sys兩塊。
- real值表示從程式開始到程式執行結束時所消耗的時間,包括CPU的用時。
- user值表示程式本身,以及它所調用的庫中的子常式使用的時間。
- sys是由程式直接或間接調用的系統調用執行的時間。
測試上述四種方法
1.
real 0m0.022s
user 0m0.000s
sys 0m0.004s
2.
real 0m0.066s
user 0m0.004s
sys 0m0.016s
3.
real 0m0.001s
user 0m0.000s
sys 0m0.000s
4.
real 0m0.015s
user 0m0.000s
sys 0m0.008s
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。