博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SHELL函数处理
阅读量:6156 次
发布时间:2019-06-21

本文共 1453 字,大约阅读时间需要 4 分钟。

SHELL函数调用分为两种:

第一种方式,有点像C语言调用函数的风格,直接把函数的执行结果复制给变量!不过,这个赋值过程和C语言的函数赋值是不一样的!

C语言中,函数调用,是将函数的返回值返回给被调函数,如:

fun(){     return (1+2);}main(){    a = fun();    ...............}

这实际上是将函数的返回值,也就是return的值复制给变量a!可是,大家注意:shell中函数调用的第一种方式,是将标准输出传递给主程序的变量,而不是返回值!请看以下程序 test.sh:

#!/bin/sh check_user(){    n=`cat /etc/passwd | cut -d ":" -f 1 | grep "^$1$" -Rn | cut -d ":" -f 1`    echo $n    #这里是使用echo语句,将结果输出到标准输出上,所以在主程序中可以使用变量接收}userinfo(){    userinfo=`head -$1 /etc/passwd | tail -1 | cut -d ":" -f 3,4`    echo $userinfo}while truedo        read username        m=`check_user $username`        #使用变量接收函数check_user传递的值        if [ -n "$m" ]        then           userinfo $m           exit        else            echo "$username is not exit!"         fidone

测试代码:

[qiu.li@l-tdata1.tkt.cn6 ~]$ ./test.sh dddd is not exit!qiu.li40006:1004

而函数的第二种调用方式,是使用$?来接收上一程序的返回值状态,也就是return返回的值。下面程序中,if判断后,return 0 或者 1,在这里,我们就可以使用$?接收return的值,然后存储下来,继而进行下一步的判断!

check_user(){    n=`cat /etc/passwd | cut -d ":" -f 1 | grep -n "^$1$"| cut -d ":" -f 1`    if [ -z "$n" ]    then        return 0    else        return 1    fi}show_userinfo(){    userinfo=`head -$n /etc/passwd | tail -1 | cut -d ":" -f 1,3,4`    echo $userinfo}echo  "input username : "read usernamecheck_user $usernamenum=$?if [ $num -eq 0 ]then    echo "The user '$username' is not exist."    exitelse    show_userinfo $nfi

上面两个程序的执行结果是一样的,但是要注意着两种函数的不同调用方式,以及其返回给主调程序的到底是什么。明白了这一点,才能准确知道到底使用何种方式接收返回值! 

转载地址:http://mnifa.baihongyu.com/

你可能感兴趣的文章
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
Javascript一些小细节
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>