return echo 返回值,返回状态码 shell

 

return  返回的是状态码, return不返回函数返回值 可以在前面用 echo 返回函数返回值,return 返回指定函数退出状态码

echo  返回的是函数返回值,如果没有使用return,则函数退出状态码是函数最后一条命令的退出状态码

return后面的语句将不再执行

#!/bin/bash

function fn(){
        a=$1
        b=$2
        c=$3
        echo bbbbbbbb
        return 233
}


ret=`fn`
echo $?
echo $ret

  return返回的状态码不能赋予变量,只能用$?获取,上图方式可以同时获取返回值和状态码,返回值赋予变量ret,状态码由$?获取

 就bash而言, return命令只能用在函数中,不能直接用在脚本中,return返回值介于[0,255],超出从0重新计算

内置命令return用于从函数中返回, ..., return命令在函数中不是必须的,函数被调用时,函数内的命令执行完成后自然会返回到调用它的地方(一般是返回到主程序)。如果某函数中有return命令,执行到return时就返回。如果return在函数中不是最后一条命令,那么return后面的其他命令不再执行

#!/bin/bash

function fn(){
        a=$1
        b=$2
        c=$3
        echo $a
        echo $b
        echo $c
        return 256
}

ret=$(fn aa bb cc)
echo "ret="$ret

ret=$(fn aa bb cc dd ee ff)
echo "ret="$ret

if [[ $ret =~ ee ]];then
        echo ret include ee
else
        echo ret don\'t include ee
fi

ret=`fn`
echo $?
echo "ret="$ret
~

  

#!/bin/sh

function fn(){
        count=0
        for p in {1..3};do
                count=$((count+p))
        done
        return $count
}


ret=`fn`
echo $?
echo "ret="$ret

  

echo 通过输出到标准输出返回。因为子进程会继承父进程的标准输出,因此,子进程的输出也就直接反应到父进程。

#!/bin/sh
function test()
{
    echo "arg1 = $1"
    if [ $1 = "1" ] ;then
        echo "19010"
    else
        echo "0"
    fi
}

echo
echo "test 1"
vul=$(test 1)
echo $vul
~

 

如果没有引号, shell会将变量使用 IFS 分割, 将分割后的参数列表传递给 echo, IFS 默认为空格( 空格, tab, \n )

 

 

 

 

 

 

 

 

posted @ 2020-10-09 20:58  ascertain  阅读(1161)  评论(0编辑  收藏  举报