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 @   ascertain  阅读(1204)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示