为什么将 IFS 设置为换行符'n'也将纯字母 n 作为 IFS 的一部分?



这是我了解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的一部分?

因为nn是一样的。n在本文中没有特殊含义n仅表示n

$ echo n
n
$ var=n
$ echo "$var"
n

为什么新设置的IFS也计数纯字母'n'作为IFS的一部分?

您设置了IFS=n,因此IFS在字符n上进行分割。

如果你想要一个换行符,你可以使用ANSI-C的引号样式IFS=$'n',或者在引号之间直接写换行符。

最新更新