一 、IFS的介紹
Shell 腳本中有個變量叫IFS(Internal Field Seprator) ,內部域分隔符。完整定義是The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command substitution, and when performing variable substitution.
Shell 的環境變量分爲set, env 兩種,其中 set 變量能夠經過 export 工具導入到 env 變量中。其中,set 是顯示設置shell變量,僅在本 shell 中有效;env 是顯示設置用戶環境變量 ,僅在當前會話中有效。換句話說,set 變量裏包含了env 變量,但set變量不必定都是env 變量。這兩種變量不一樣之處在於變量的做用域不一樣。顯然,env 變量的做用域要大些,它能夠在 subshell 中使用。
IFS 是一種 set 變量,當 shell 處理"命令替換"和"參數替換"時,shell 根據 IFS 的值,默認是 space, tab, newline 來拆解讀入的變量,而後對特殊字符進行處理,最後從新組合賦值給該變量。
2、 IFS的簡單實例
1 查看IFS的值
echo "$IFS"
echo "$IFS"|od -b
0000000 040 011 012 012
0000004
直接輸出IFS是看不到值的,轉化爲二進制就能夠看到了,"040"是空格,"011"是Tab,"012"是換行符"\n" 。最後一個 012 是由於 echo 默認是會換行的。
2 實際中的應用
#!/bin/bash
OLD_IFS=$IFS #保存原始值
IFS="" #改變IFS的值
...
...
IFS=$OLD_IFS #還原IFS的原始值