天天看點

字段分隔符IFS

IFS(Internal Field Seperator)在Linux的shell中預設的分隔符,用來把command line分解成word(字段)。

IFS可以是White Space(空白鍵)、Tab( 表格鍵)、Enter( Enter鍵)中的一個或幾個。

IFS是shell腳本中的一個重要概念,在處理文本資料時,它是相當有用的。内部字段分隔符是用于特定用途的定界符。

IFS是存儲定界符的環境變量,它是目前shell環境使用的預設定界字元串。

IFS的設定方法很簡單,和普通變量設定方法類似:

IFS=":"

建議設定IFS前儲存原IFS的值,在使用後及時恢複。

使用ifs忽略換行符的示例代碼如下:

#!/bin/bash
file="university"
IFS=$'\n'
for university in `cat $file`
do
        echo "nanjing has famous university of $university"
done
~       
           

university的内容如下:

[[email protected] shell]# cat university
southeast universiyt
nanjing university
nanshida
nanhang
nanligong
           

執行結果如下:

[email protected] shell]# ./ifs.sh 
nanjing has famous university of southeast universiyt
nanjing has famous university of nanjing university
nanjing has famous university of nanshida
nanjing has famous university of nanhang
nanjing has famous university of nanligong
           

在處理長腳本時,可能在一個地方修改IFS的值,然後忘掉它了并在腳本其他地方以為還是預設的值。

一個可參考的簡單實踐在改變IFS之前儲存原來IFS值,在後再恢複它。

這種技術可以這樣程式設計:

IFS.OLD=$IFS

IFS=$'\n'

<use ...............>

IFS=$IFS.OLD

上一篇: shell數組 IFS
下一篇: shell IFS