1cpuer 发表于 2018-02-14 07:21

shell 关闭和推出函数

本帖最后由 1cpuer 于 2018-02-14 08:33 编辑

举例
echo {1..10}
echo {a..h}
我用的是 return
是关闭函数吗?
不大会用
# cat return.sh
#!/bin/bash

function test {
echo {1..10}

}
return
function hook {
echo {a..h}

}

hook
echo "hook execute result "$?

test
echo "test execute result "$?


shell 函数中的用exit时,什么情况下仅仅退出函数,什么情况下退出整个shell程序?
http://bbs.csdn.net/topics/320037026

bigqueues 发表于 2018-02-14 09:10

本帖最后由 bigqueues 于 2018-02-14 09:14 编辑

没有"关闭函数"的概念。函数执行的返回值是由return来控制。
exit是用来控制当前shell(即$$进程)的返回码(exit code).

➜~
➜~ echo haha
haha
➜~ echo $$
60014
➜~ return 0
➜~ exit 0

随便开一个terminal,楼主觉得最后一个回车敲下去会发生什么? 是否看出return和exit区别了。

1cpuer 发表于 2018-02-14 12:05

回复 2# bigqueues

#!/bin/bash                                                                     

function test(){
echo 12bc
return 0
}
test
function test1(){
echo bc12
}
test1

如何 bc12 不打印?

dorodaloo 发表于 2018-02-14 19:24

POWERSHELL 学会了,就会变强 :mrgreen:
以后遇到问题,学学POWERSHELL即可。

bigqueues 发表于 2018-02-15 08:40

回复 3# 1cpuer

#!/bin/bash
function test(){
echo 12bc
return 0
}
test
function test1(){
echo bc12
}
test1 &>/dev/null

echo不打印就是关闭标准输出呗
实际还是执行了。

1cpuer 发表于 2018-02-15 11:40

回复 5# bigqueues

为什么 test 有个小括号;和没有有啥区别?

dorodaloo 发表于 2018-02-15 19:41

回复 1# 1cpuer

小师太,shell不适合你.
但是你可以学习POWERSHELL,
POWERSHELL只有 强 简 2个字.

学习shell却要看很多书,sed, awk, bash script, python, ruby, perl...

dorodaloo 发表于 2018-02-15 19:46

sed & awk
grep
bash

1cpuer 发表于 2018-02-16 07:39

回复 8# dorodaloo

太师所云太强了,英文不太通 ?no sanke

1cpuer 发表于 2018-02-19 00:19

http://bbs.csdn.net/topics/110143073
页: [1]
查看完整版本: shell 关闭和推出函数