shell中的特殊變量IFS的使用,以及其值爲$'\n'與'\n'時的區別。

在shell中使用到for循環時,是通過IFS同樣也是來定義分隔符。如果要指定多個IFS字符,只要將他們在賦值行串起來就行。如下:

IFS=$'\n':;"

這個賦值會將換行符、冒號、分號和雙引號作爲字段分隔符。如何使用 IFS 字符解析數據沒有任何限制。

那麼下面三個的區別是什麼呢?

IFS='\n'  //將字符\和字符n作爲IFS的換行符。
IFS='\n'  //與上面一樣。
IFS=$'\n' //正真的使用換行符做爲字段分隔符。

//如果IFS='\n':;"
//這個賦值會將反斜槓、n、冒號、分號和雙引號作爲字段分隔符。

測試如下:
(文件log.txt)

hello \world
this is n.jack
are you n or y

(測試用shell1)

#!/bin/bash
str=`cat log.txt`
IFS=$'\n'
for word in $str; do
echo $word
done

/**
輸出:
hello \world
this is n.jack
are you n or y
**/

(測試用shell2)

#!/bin/bash
str=`cat log.txt`
IFS='\n'
for word in $str; do
echo $word
done

/**
輸出:
hello 
world
this is 
.jack
are you 
 or y
**/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章