ksh regression wrong return code from a function
Issue
- Under some circumstances, one gets an incorrect return code from a function.
- Refer Test script:
#!/bin/ksh
foo() {
z=shift
print -r $z | read
return 1
}
bar() {
z=shift
print -r $z | read
cat /dev/null
return 1
}
out=$(foo "foo")
res=$?
echo Res is: $res
out=$(bar "bar")
res=$?
echo Res is: $res
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
[root@localhost doug]# rpm -qa ksh
ksh-20100621-19.el6_4.4.x86_64
[root@localhost doug]# ksh --version
version sh (AT&T Research) 93t+ 2010-06-21
[root@localhost doug]# vi testscript.sh
[root@localhost doug]# chmod 755 testscript.sh
[root@localhost doug]# su - doug
[doug@localhost ~]$ ./testscript.sh
Res is: 1
Res is: 1
[doug@localhost ~]$ exit
logout
[root@localhost doug]#
[root@localhost doug]# ls
ksh-20120801-10.el6_5.6.x86_64.rpm testscript.sh
[root@localhost doug]# rpm -q ksh
ksh-20100621-19.el6_4.4.x86_64
[root@localhost doug]# rpm -e ksh-20100621-19.el6_4.4
[root@localhost doug]# rpm -ivh ksh-20120801-10.el6_5.6.x86_64.rpm
Preparing... ########################################### [100%]
1:ksh ########################################### [100%]
[root@localhost doug]#
[root@localhost doug]# ksh --version
version sh (AT&T Research) 93u+ 2012-08-01
[root@localhost doug]#
[root@localhost doug]# su - doug
[doug@localhost ~]$ ./testscript.sh
Res is: 0 <============wrong value
Res is: 1
[doug@localhost ~]$
Environment
- ksh-20120801-10.el6_5.6.x86_64
- Red Hat Enterprise Linux
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
