我正在编写一些Shell代码,为了编程的一些逻辑,我需要用负数做一些返回。这是:
if condition ; then
return -1
else
return -2
fi尽管如此,我在使用负数时还是会出错,可能是因为:Unix exit statuses are restricted to values 0-255, the range of an unsigned 8-bit integer. (来自status#Unix)
有办法绕过这个吗?(我知道我可以再用一个返回号)
谢谢。
发布于 2011-11-07 16:43:55
对不起,shell脚本的Unix标准是成功退出0,不成功退出非零。
你能做的最好的就是捕获返回值,并根据你的意愿使用它们。
myfunc () {
printf -- "$1" "\n"
if (( ${1:-0} == 0 )) ; then
return 0
else
return 1
fi
}
var=$(myfunc -2)
print var=${var}
#output
var=-2不是你的领主想听的,而是把他们介绍给Posix标准。
同时,$()也被称为命令替换。您将看到,人们也会使用配对的倒排代码'cmd‘来实现命令sub,但是使用$( cmd ),除非您在Sun/AIX或其他传统供应商平台上使用原始的承载shell编码,或者您需要创建完全向后的代码(重点放在向后!)兼容。
$()很好,因为你可以任意地嵌套它们。
$( cmd1 $( cmd2 $( cmd..n ) ) )根据新的Kornshell编程语言(ISBN-10: 0131827006,1995年!)后排不受欢迎。
请注意,这两种类型的命令替换都是创建一个子shell来运行该命令,然后将结果“替换”到命令行中。
我希望这有帮助;-)
https://stackoverflow.com/questions/8038986
复制相似问题