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 )
分类:
Bash
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律