这是我了解IFS的基本shell文件
PROGRAMMING="
java programming
python programming
c programming
"
echo "--------------------"
for p in $PROGRAMMING; do
echo $p
done
echo "--------------------"
OLD_IFS=$IFS
IFS=n
for p in $PROGRAMMING;do
echo $p
done
IFS=$OLD_IFS
下面列出了以下结果
--------------------
java
programming
pytho
programming
c
programming
--------------------
java programmi
g
pytho programmi
g
c programmi
g
为什么新设置的IFS也将纯字母'n'作为IFS的一部分?
为什么将IFS设置为换行字符'n'也将纯字母n作为IFS的一部分?
因为n
和n
是一样的。n
在本文中没有特殊含义,n
仅表示n
。
$ echo n
n
$ var=n
$ echo "$var"
n
为什么新设置的IFS也计数纯字母'n'作为IFS的一部分?
您设置了IFS=n
,因此IFS
在字符n
上进行分割。
如果你想要一个换行符,你可以使用ANSI-C的引号样式IFS=$'n'
,或者在引号之间直接写换行符。