免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3826 | 回复: 5
打印 上一主题 下一主题

[学习共享] 给自定义shell函数传参数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-11-03 22:24 |只看该作者 |倒序浏览
问题:自定义的shell脚本函数如何传递参数?
function fun1()
{
echo $1 hello word;
return 256;
}

function fun2()
{
echo $?
}

function fun3()
{
echo $1 my parm;
}

fun1 $1 #把命令行传入的第一个参数传递给fun1函数;
fun2     #顺序执行,fun2函数把fun1的返回值输出;
fun3 $2 #把命令行第二个参数作为fun3的第一个参数;

#==============================
注释:
(1)shell脚本自定义函数的返回值范围[0-255];
(2)$0脚本文件名,$[1-9]命令行第1-9个参数,第12个参数${12}表示;
(3)$?上一条命令的返回值,$#命令行传入参数的个数,$$该脚本的进程ID号

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
2 [报告]
发表于 2016-11-04 07:28 |只看该作者
  1. [root@CentOS_6 tmp]# . /var/tmp/functions
  2. [root@CentOS_6 tmp]#
  3. [root@CentOS_6 tmp]#
  4. [root@CentOS_6 tmp]# fun1 1
  5. 1 hello word
  6. [root@CentOS_6 tmp]# cat /var/tmp/functions
  7. fun1()
  8. {
  9. echo $1 hello word;
  10. return 256;
  11. }
  12. [root@CentOS_6 tmp]#
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
3 [报告]
发表于 2016-11-04 09:57 |只看该作者
回复 1# 寻蝉林子

  1. #!/bin/bash

  2. function fun1()
  3. {
  4. echo $1 hello word;
  5. return 256;
  6. }

  7. function fun2()
  8. {
  9. echo $?
  10. }

  11. function fun3()
  12. {
  13. echo $1 my parm;
  14. }

  15. fun1 $1
  16. fun2
  17. fun3 $2
复制代码
执行脚本 $1   $2
./test.sh tom abc
--------------------
输出结果
tom hello word
0
abc my parm

shell十三问
http://bbs.chinaunix.net/forum.p ... p;page=7#pid1628522

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之八一
日期:2016-05-18 15:38:22
4 [报告]
发表于 2016-11-04 11:46 |只看该作者
  1. #!/bin/sh
  2. function fun1()
  3. {
  4.         echo $1 "hello word";
  5.         return 222;
  6. }

  7. function fun2()
  8. {
  9.         num=`fun1 $1`;
  10.         echo "$?";
  11.         echo "$num";
  12. }

  13. function fun3()
  14. {
  15.         echo $1 "my parm";
  16. }


  17. fun2 $1;
  18. fun3 $2;
复制代码

  1. bash test.sh aaa bbb
复制代码

222
aaa hello word
bbb my parm

返回256的话超过255了,会强制变成成功0失败1.

论坛徽章:
0
5 [报告]
发表于 2016-11-04 19:16 |只看该作者
不是返回失败为1,是256的补码是1,你可以试试返回大于256的值试试

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之八一
日期:2016-05-18 15:38:22
6 [报告]
发表于 2016-11-07 14:12 |只看该作者
回复 5# 寻蝉林子

试了下的确如此
谢谢告知哈。我还以为做的范围限制呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP