zoukankan      html  css  js  c++  java
  • shell获取函数的返回值

    背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数。shell和其他语言的函数返回值还是差别挺大的。
     
    定义一个函数
    functionname(){
         操作内容
         echo 输出内容
         return 返回值 #返回值可有可不有
    }
     
    获得函数的返回值
     
    1.函数默认是将标准输出传递出来,不是返回值。
    所以如果直接调用functionname,实际上是将输出传递回来
    例如:
    a=`functionname`
    将函数functionname的标准输出传递给a
     
    2.调用函数不需要加(),直接写函数名就可以
    functionname
     
    3.使用$?接收上一程序的返回值状态,也就是return的值
    functionname
    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来调用函数
     
  • 相关阅读:
    nginx 添加response响应头
    2018年 js 简易控制滚动条滚动的简单方法
    handsontable 常用 配置项 笔记
    使用react-handsontable
    node 常用模块及方法fs,url,http,path
    POST application/json 适用于传递多层的json
    react 子元素修改父元素值的一个偏方,虽然简单,但是不建议用,
    mysql 连接出错 'mysqladmin flush-hosts'
    solr7.3.1定时增量索引
    mysql8修改密码加密方式
  • 原文地址:https://www.cnblogs.com/meitian/p/5662022.html
Copyright © 2011-2022 走看看