Shell for 循环 调用函数
发布时间:2020-12-15 09:13:55 所属栏目:安全 来源:网络整理
导读:参考:https://www.cnblogs.com/meitian/p/5662022.html #!/bin/bash function a() ( ... bFlag=b $1 return $bFlag } function b() { ... echo "0" } #切割 OLD_IFS=$IFS IFS='|' dataArr=${data} IFS=$OLD_IFS for d in ${dataArr[@]}; do a ${d} flag=$?
参考:https://www.cnblogs.com/meitian/p/5662022.html #!/bin/bash function a() ( ... bFlag=b $1 return $bFlag }
function b() { ... echo "0" }
#切割 OLD_IFS=$IFS IFS='|' dataArr=${data} IFS=$OLD_IFS for d in ${dataArr[@]}; do a ${d} flag=$? done
如果使用 函数a中使用echo返回值,调用形式flag=`a ${d}`,如果${d}包含(或者(,就无法传参
shell获取函数的返回值
背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数。shell和其他语言的函数返回值还是差别挺大的。
定义一个函数
functionname(){
操作内容
echo 输出内容
return 返回值 #返回值可有可不有
}
获得函数的返回值
1.函数默认是将标准输出传递出来,不是返回值。
所以如果直接调用functionname,实际上是将输出传递回来
例如:
a=`functionname`
将函数functionname的标准输出传递给a
2.调用函数不需要加(),直接写函数名就可以
functionname
3.使用$?接收上一程序的返回值状态,也就是return的值
echo $?
这里输出的是函数的返回值
4.函数的返回值一般是0和1,表示成功和失败,如果一定要返回其他整数,定义一个全局变量,在函数中改变它
遇到的问题:
将函数返回值赋值时报错: return: diffrentcluster: numeric argument required
虽然不影响使用,但看着总是不好,查了一下说shell的函数默认是返回0和1来表示是否成功的,如果一定要返回值的话,可以在函数外定义一个全局变量,然后在函数中赋值这个变量。这样调用函数后,全局变量就变了,达到同样的效果
例如:通过函数增加num值
#!/bin/sh
num=10
add(){
echo "test"
((num++))
add
输出的结果是11(变量自增我用num=num+1是无效的,不知道为什么,必须要用num++)
其他
shell中函数的参数定义也和其他语言不一样,不是放在括号内。函数中定义时直接在函数体内使用$1、$2....$n来表示参数
调用时直接 functionname para1 para2 ..paran来调用函数
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在Angular2中集成Linkedin
- docker – 在raspberry pi 3上运行elasticsearch容器
- angularjs – 为什么插值在ng-show内部工作而不在ng-click内
- 【Ionic+AngularJS 开发】之『个人日常管理』App(一)
- 使用AngularJS按摩DOM
- shell – 如何区分部分线条?
- shell 学习四十天---awk 的惊人表现
- 使用Loadrunner 调用Webservice接口测试优化总结
- angularjs – Angular2 NavigationEnd事件的类型’Event’上
- angular – 使用firebase在应用程序中路由不正确