在linux shell脚本中使用函数时,需要注意函数返回后,返回值的使用,不然很容易出问题。具体来说,shell脚本函数通过return返回后,返回值会保存在$?
中。需要注意的是,$?
会在函数返回后很快变回0值,所以应在函数返回后尽快将$?
保存在变量中,然后后续通过该变量来访问返回值,而不是直接通过$?
来进行后续处理。
如下代码,尽管D2确实是个目录,但是得到的结果始终会是$A
是一个REG文件,这是因为函数testFile返回后做了些其他的事,在后续进行$?
值判断时,它已变回了0.
#! /bin/bash
testFile()
{
if [ -f $1 ]