忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 2272 | 回复: 9

[文本处理] shell 关闭和推出函数 [复制链接]

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-02-14 07:21 |显示全部楼层
本帖最后由 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

论坛徽章:
0
发表于 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区别了。

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-02-14 12:05 |显示全部楼层
回复 2# bigqueues

#!/bin/bash                                                                     

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

如何 bc12 不打印?

论坛徽章:
5
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:44
发表于 2018-02-14 19:24 |显示全部楼层
POWERSHELL 学会了,就会变强
以后遇到问题,学学POWERSHELL即可。

论坛徽章:
0
发表于 2018-02-15 08:40 |显示全部楼层
回复 3# 1cpuer

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

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

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-02-15 11:40 |显示全部楼层
回复 5# bigqueues

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

论坛徽章:
5
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:44
发表于 2018-02-15 19:41 |显示全部楼层
回复 1# 1cpuer

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

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

论坛徽章:
5
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:44
发表于 2018-02-15 19:46 |显示全部楼层

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-02-16 07:39 |显示全部楼层
回复 8# dorodaloo

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

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-02-19 00:19 |显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP