我正在尝试在 KornShell (ksh) 脚本中修改它之前保存我的 IFS。我发现备份变量没有被正确保存,所以我写了一个简单的脚本来重现这个问题。
#!/usr/bin/ksh
OFIS=$IFS
echo "$IFS" | od -b
echo "$OIFS" | od -b
当我回显 OIFS 时,我期望看到的内容与回显 IFS 时相同,后者是空格 (040)、制表符 (011) 和换行符 (012) 的八进制 ascii 值。但是,这是输出:
0000000 040 011 012 012
0000004
0000000 012
0000001
请注意,IFS 变量的输出包含所有三个字符,而 OIFS 的输出仅包含换行符 (012)。我看过的每个论坛都表明这是创建 IFS 副本的方法。有谁知道为什么 OIFS 没有正确设置?我也尝试用双引号将 $IFS 括起来,但得到了相同的结果:
#!/usr/bin/ksh
OFIS="$IFS"
echo "$IFS" | od -b
echo "$OIFS" | od -b
0000000 040 011 012 012
0000004
0000000 012
0000001
我在 AIX6 上运行。