OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4128|回复: 0

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

[复制链接]

132

主题

340

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1036
金钱
1036
注册时间
2017-10-30
在线时间
163 小时
发表于 2018-9-7 16:46:25 | 显示全部楼层 |阅读模式
  一、Shell函数的语法
  因为函数是脚本类语言,在执行时是逐行执行的,因此,Shell 函数必须先定义后使用。
  Shell 函数的定义格式如下:
  [ function ] funname [()]
  {
  command;
  [return int;]
  }
  说明:function 关键词是可选项,可加可不加。
  大括号内饰函数体,最后是返回值,可以加【return】关键词来指定函数返回内容,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。
  二、Shell函数使用举例
  接下来我们还是通过例子来学习下Shell函数的运用。
  示例1:
  #!/bin/bash
  # authorinux大学
  # url:www.linuxdaxue.com
  #date:2016-06-01
  demo(){
  echo "这是我的第一个 shell 函数!"
  }
  echo "-----函数开始执行-----"
  demo
  echo "-----函数执行完毕-----"
  说明:demo是一个函数的定义,函数体只有一句:echo "这是我的第一个 shell 函数!"
  然后通过函数名来调用函数。
  程序输出:
  -----函数开始执行-----
  这是我的第一个 shell 函数!
  -----函数执行完毕-----
  这个例子并没有体现函数的入参等使用,接下来给大家介绍下Shell中函数的传参方法。
  三、Shell函数参数处理
  在Shell中,调用函数时可以向其传递参数。
  在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数,$0代表脚本本身。
  Shell函数参数处理例子
  示例2:
  我们再看一个例子:
  #!/bin/sh
  #Authorinux大学
  #url:http://www.linuxdaxue.com
  #date:2016-06-01
  function fSum()
  {
  echo "入参为:"$1,$2
  return $(($1+$2))
  }
  fSum 5 7
  total=$(fSum 3 2)
  echo "Return :"$total,$?
  这个定义了一个计算参数和的函数,函数可以通过$1,$2这种形式来获取入参值,然后通过$(($1+$2))这种形式来将两值相加,并返回结果。
  调用时,也可以通过括号的形式来调用,Shell会调用单括号里面的命令。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔。
  输出:
  入参为:5,7
  Return :入参为:3,2,5
  注意:
  注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
  函数中用到的特殊字符
  另外,还有几个特殊字符用来处理参数:
  参数说明
  $#传递到脚本的参数个数
  $*以一个单字符串显示所有向脚本传递的参数
  $$脚本运行的当前进程ID号
  $!后台运行的最后一个进程的ID号
  $@与$*相同,但是使用时加引号,并在引号中返回每个参数。
  $-显示Shell使用的当前选项,与set命令功能相同。
  $?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  好了,有关Shell函数的相关知识先为大家介绍到这里,Shell中的函数非常强大,在此不再展开讲,希望大家能够自己多多练习,熟练掌握。
linux学习交流群:690327559

linux免费学习课程  :

linux基础
http://www.makeru.com.cn/course/details/2058?s=26056

C高级之linux
http://www.makeru.com.cn/course/details/2478?s=26056

linux多线程编程
http://www.makeru.com.cn/course/details/1937?s=26056


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表