加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在shell脚本中从被调用的函数返回值

发布时间:2020-12-15 16:32:50 所属栏目:安全 来源:网络整理
导读:我想从shell脚本中调用的函数返回值。也许我缺少语法。我试着使用全局变量。但这也不行。代码是: lockdir="somedir"test() { retval="" if mkdir "$lockdir" then # directory did not exist,but was created successfully echo 2 "successfully acquired l
我想从shell脚本中调用的函数返回值。也许我缺少语法。我试着使用全局变量。但这也不行。代码是:
lockdir="somedir"
test() {
    retval=""

    if mkdir "$lockdir"
        then    # directory did not exist,but was created successfully
            echo >&2 "successfully acquired lock: $lockdir"
            retval="true"
        else
            echo >&2 "cannot acquire lock,giving up on $lockdir"
            retval="false"
    fi
    return retval
}


retval=test()
if [ "$retval" == "true" ]
    then
        echo "directory not created"
    else
        echo "directory already created"
fi
bash函数不能直接返回一个字符串,就像你想要的。你可以做三件事:

> echo一个字符串
>返回退出状态,这是一个数字,而不是字符串
>共享变量

这对于一些其他壳也是正确的。

以下是执行每个选项的方法:

回声字符串

lockdir="somedir"
testlock(){
    retval=""
    if mkdir "$lockdir"
    then # directory did not exist,but was created successfully
         echo >&2 "successfully acquired lock: $lockdir"
         retval="true"
    else
         echo >&2 "cannot acquire lock,giving up on $lockdir"
         retval="false"
    fi
    echo "$retval"
}

retval=$( testlock )
if [ "$retval" == "true" ]
then
     echo "directory not created"
else
     echo "directory already created"
fi

2.返回退出状态

lockdir="somedir"
testlock(){
    if mkdir "$lockdir"
    then # directory did not exist,but was created successfully
         echo >&2 "successfully acquired lock: $lockdir"
         retval=0
    else
         echo >&2 "cannot acquire lock,giving up on $lockdir"
         retval=1
    fi
    return "$retval"
}

testlock
retval=$?
if [ "$retval" == 0 ]
then
     echo "directory not created"
else
     echo "directory already created"
fi

共享变量

lockdir="somedir"
retval=-1
testlock(){
    if mkdir "$lockdir"
    then # directory did not exist,giving up on $lockdir"
         retval=1
    fi
}

testlock
if [ "$retval" == 0 ]
then
     echo "directory not created"
else
     echo "directory already created"
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读