如何在KornShell中正确保存IFS(ksh)

时间:2013-10-01 15:01:56

标签: shell unix ksh aix ifs

我正在尝试保存我的IFS,然后在KornShell(ksh)脚本中修改它。我发现备份变量没有得到正确保存,所以我写了一个简单的脚本来重现这个问题。

#!/usr/bin/ksh

OFIS=$IFS
echo "$IFS" | od -b
echo "$OIFS" | od -b

当我回显OIFS时,我期望看到的是与回显IFS相同的东西,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上运行。

1 个答案:

答案 0 :(得分:2)

分配

并非严格要求引号
foo="  lots   of    spaces   "
bar=$foo
echo ">$bar<"
>  lots   of    spaces   <

当然,当您使用变量时,通常需要引号。