shell return不一定会退出函数

在Shell脚本中,函数通常用return退出,但当管道涉及时,它会在子shell中执行,导致return只会退出子shell,不会中断函数执行。示例代码展示了即使在return后仍有后续命令(echo3)被执行的情况。
摘要由CSDN通过智能技术生成

我们都知道shell在函数中使用return表示立刻退出当前函数,但是有一个特例就是管道。请看下面的代码:

#!/bin/bash

function main()
{
    echo 1
    echo 2 | while read line
    do
        echo $line
        return 0
    done
    echo 3
}

main

运行结果如下:

1
2
3

原因就是使用管道会创建一个子shell来执行后面的内容,而在该子shell中执行return,只能退出当前子shell,并不能退出函数。你可以理解为调用了一个匿名函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值