行遍歷命令行的輸出結果

  對於命令行輸出的結果,如果要遍歷,一般都是用for循環遍歷,具體語法爲:

for line in `ls` do
    dosomething
done

  此時對於ls這類語句的輸出結果,在遍歷的時候會調用系統默認的分隔符(IFS=” “),對於ls這類命令結果確實是在一行,只需要按照空格進行分割的話,如上語法就OK了。
但是往往,有時候是需要對命令行輸出結果按行遍歷的,如:

for line in `ls -lrt` do
    dosomething
done

  按照ls -lrt遍歷文件的屬性,此時直接這樣就會發現分隔符還是用空格就不行了,這個時候,應該用如下方式:

oldifs="$IFS"
IFS=$'\n'

for line in `ls -lrt` do
    dosomething
done

IFS="$oldifs"

  如上意思是先把老的分隔符給保留到中間變量中,然後替換默認分隔符爲換行符,再執行遍歷,此時for遍歷的時候就會按行遍歷,最後執行完畢後再把系統分隔符給還原。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章