SHELL函数调用分为两种:

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

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

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

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

#!/bin/sh 

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

测试代码:

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

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

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

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

SHELL函数处理的更多相关文章

  1. Shell入门教程:Shell函数详解

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...

  2. Shell入门教程:Shell函数的返回值

    shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...

  3. (转)Shell函数

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.  函数 ...

  4. Linux Shell系列教程之(十五) Shell函数简介

    本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...

  5. Shell函数的简单应用

    Shell函数的简单应用 在脚本内给函数传参: #!/bin/bash . /etc/init.d/functions CheckUrl (){ curl -I -s $ | head - } Che ...

  6. Shell函数语法

    Shell函数语法 定义函数: function   函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名  参数一   参数二 return在函数里面使用会跳出函数并 ...

  7. shell 函数

    1 shell函数的定义及其调用 shell函数有两种格式: function name { commands } name() { commands } 其中,name为函数名,commands为函 ...

  8. Shell函数:Shell函数返回值、删除函数、在终端调用函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...

  9. Shell函数返回值、删除函数、在终端调用函数

    Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...

  10. Linux Shell 函数返回值

    Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fu ...

随机推荐

  1. shapefile与字符集编码设置

    在 ArcGIS Desktop (ArcMap, ArcCatalog, and ArcToolbox) 中,有编码页转换功能(CODE PAGE CONVERSION),可以读写多种字符编码的 s ...

  2. java解压缩zip和rar的工具类

    package decompress; import java.io.File; import java.io.FileOutputStream; import org.apache.tools.an ...

  3. SharePoint Online 创建和使用视图

    前言 本文介绍如何在Office 365中创建和使用视图. 正文 首先,解释一下什么是SharePoint站点视图,所谓视图,就是列表的一个呈现形式,包含特定的栏.排序.筛选.分组等特性,我们通常创建 ...

  4. 用ImageSwitcher实现显示图片(更改图片时有动画效果)

    ImageView和ImageSwitcher都是用来显示图片的.只不过后者在更新显示的图片的时候可以有动画效果. 注意点: 1.ImageSwitcher初始化需要定义一个ViewFactory,该 ...

  5. 关于mysql中information_schema.tables

    项目中出现这样一个SQL语句,现记录如下: @Select("select table_name tableName, engine, table_comment tableComment, ...

  6. .NET零基础入门10:打老鼠之数据存储

    一:数据库设计 到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中. 在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库" ...

  7. Java反编译工具Jad详解

    做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...

  8. Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别

    Djangon生产环境静态资源的处理 Django 关闭DEBUG模式后,就相当于是生产环境了. Django框架一旦作为生产环境,它的静态文件访问接口就不应该从Django框架中走,必须在Djang ...

  9. Verilog 加法器和减法器(2)

    类似半加器和全加器,也有半减器和全减器. 半减器只考虑当前两位二进制数相减,输出为差以及是否向高位借位,而全减器还要考虑当前位的低位是否曾有借位.它们的真值表如下: 对半减器,diff = x ^y, ...

  10. Cesium原理篇:3D Tiles(1)渲染调度【转】

    Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D T ...