對於命令行輸出的結果,如果要遍歷,一般都是用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遍歷的時候就會按行遍歷,最後執行完畢後再把系統分隔符給還原。