IFS簡單說明,
bash下的很多命令都會分割單詞,絕大多數時候預設是採用空格作為分隔字元,有些時候遇到定位字元、分行符號也會進行分隔。最典型的是"for i in a b c",它會分割變數列表"a b c"使其成為三個變數。這種分隔字元是由IFS變數指定的。
IFS是bash內部欄位分隔符號的環境變數。
[root@xuexi ~]# set | grep IFSIFS=$' \t\n'
預設的IFS在碰到空格、定位字元\t和分行符\n就會自動分隔進入下一步。但是對空格處理有點不一樣,對行首和行尾兩邊的空格不處理,並且多個連續的空格預設當作一個空格。
有些時候在編寫指令碼或執行迴圈的時候,修改IFS可以起很大作用。如果要修改IFS,最好記得先備份系統IFS,再需要的地方再還原IFS。
例如:
[root@xuexi ~]# data="name,sex,rollno,location"[root@xuexi ~]# oldIFS=$IFS # 備份IFS到變數oldIFS[root@xuexi ~]# IFS="," # 將IFS設定為逗號,便於做data的分隔字元[root@xuexi ~]# for item in $data;do echo Item:$item;doneItem:nameItem:sexItem:rollnoItem:location
[root@xuexi ~]# IFS=$oldIFS # 最後將IFS還原
可以看到,上面的樣本將預設分隔符號設定為了逗號後,不用處理data變數就可以輕鬆劃分欄位了。
大多數時候,有需要劃分的地方都會採用IFS的第一個字元作為分隔字元,但並不總是如此,具體有哪些命令會使用IFS劃分,以及使用IFS的哪部分劃分,可以尋找man bash。
回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7402137.html註:若您覺得這篇文章還不錯請點擊下右下角的推薦,有了您的支援才能激發作者更大的寫作熱情,非常感謝!