我参与了将包含几个ksh脚本的系统从AIX 6.1移植到SUSE-Linux的过程.我在ksh在两个系统上的行为方式遇到了以下不同之处:
# LocalVar.sh
test_loc_var()
{
typeset -t var
var=localvariable
echo "var = $var"
}
typeset var=globalvariable
echo "var = $var"
test_loc_var
echo "var = $var"
Run Code Online (Sandbox Code Playgroud)
AIX上的正确结果是:
var = globalvariable
var = localvariable
var = globalvariable
Run Code Online (Sandbox Code Playgroud)
Linux上的错误结果是:
var = globalvariable
var = localvariable
var = localvariable
Run Code Online (Sandbox Code Playgroud)
我的问题是:
注意:
下表总结了这两个系统:
uname -s | Linux AIX
uname -r | 2.6.16.60-0.54.5-smp 1
which ksh | /bin/ksh /usr/bin/ksh
rpm -qa | grep -i ksh | ksh-93s-59.11.35 -
lslpp -l | …Run Code Online (Sandbox Code Playgroud)