Shell脚本学习笔记-函数

1.  基本的脚本函数

1.1 函数的定义

function name {
        commands
}

或者

name() {
     commands
}

1.2 简单示例

#!/bin/sh

function Func01 {
	echo "This is function of Func01"
}

Func02() {
	echo "This is function of Func02"
}

Func01

Func02

运行结果:

1.3 函数返回值与退出码

#!/bin/sh

function Func01 {
	echo "This is function of Func01"
}

Func02() {
	echo "This is function of Func02"
}

Func03(){
	echo "This is function of Func02"
       #自定义退出码,退出码需限制在0-255之间
        return 10
}

Func01
#输出函数运行的退出码,0表示成功
echo "$?"

#运行一个未定义的函数,观察退出码
Func04
echo "$?"

#观察函数自定义的退出码
Func03
echo "$?"

运行结果:

2. 函数中变量使用

2.1 函数中变量参数处理

#!/bin/sh

sum(){
     if [ $# -eq 2 ]
     then
         sum=$[ $1+$2 ]
         echo $sum
     else
          echo "please input 2 args"
          return 1
     fi
}

value=`sum $1 $2`
if [ $? -eq 0 ]
then
    echo $value
else
    echo "Err $value"
fi

运行结果:

2.2 函数中使用数组参数

#!/bin/sh

#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)

#定义一个求和函数
sum(){
   result=0
   for var in [email protected]
   do
      result=$[ $result+$var]
   done
   echo $result
}

#输出数组的长度
echo "输出数组的长度: ${#numberArray[@]}"
#输出数组中指定的值
echo "输出数组中指定的值:${numberArray[2]}"

#修改数组指定的值
numberArray[2]=4
echo "修改数组指定项后的值:${numberArray[2]}"

#调用函数,使用数组变量
echo "调用函数,使用数组变量: `sum ${numberArray[*]}`"

运行结果:

2.3 通过local关键字定义函数中的局部变量

#!/bin/sh

#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)

#定义一个求和函数
sum(){
#未定义局部变量的情况
   result=0
   for var in [email protected]
   do
      result=$[ $result+$var ]
   done
   echo $result
}
echo "未定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"

sum(){
#使用local关键字将result变量定义为局部变量
   local result=0
   for var in [email protected]
   do
      result=$[ $result+$var]
   done
   echo $result
}
echo "使用了local关键字定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"

运行结果:

3. 引用函数库

3.1 通过source filepath命令在脚本中引用其他其他脚本的函数库, source filepath也可简写为“. filepath”的形式

3.2 简单示例,编写两个shell脚本,在newshell.sh脚本中引用shellscript的函数,e.g:

时间: 2024-10-16 10:18:32

Shell脚本学习笔记-函数的相关文章

shell 脚本学习笔记--函数

一.定义格式 [function] 函数名() { 命令表 } 二.调用方法 先定义,后使用,直接输入函数名,不需要圆括号() 三.函数参数传递方法 可以利用位置参数或者变量进行传递 #! /bin/bash# myfirst.sh testFunction() { echo "$1,$2" #位置参数传递参数 echo "$val1,$val2" #变量传递参数 } val1="test1" val2="test2" tes

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

Shell 脚本学习笔记十:Shell输入输出重定向

command > file       将输出重定向到 file. command < file       将输入重定向到 file. command >> file     将输出以追加的方式重定向到 file. n > file              将文件描述符为 n 的文件重定向到 file. n >> file             将文件描述符为 n 的文件以追加的方式重定向到 file. n >& m             

shell脚本学习笔记 (流编辑器sed)

sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不只支持正則表達式.它另一些比較厉害的功能. 我给出一个样例,大家看看有什么办法能够解决它吧. <html><head><title>Hello World</title> <body>Welcome to the world of regexp!&l

Shell 脚本学习笔记九:Shell函数

函数的定义格式: function funName() { action; return xxx; } 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n /// 1.没有 return 语句的函数 demoFun() { echo "这是一个Shell函数"; } echo "----- 函数开始执行 -----&quo

shell脚本学习笔记

1.判断符号:中括号[ ] [ ]进行数据的判断,例如我想知道HOME这个变量是否为空,[ -z "$HOME" ],或者两个字符串是否相等,[ "$HOME"  ==  "$MALI" ].由于中括号使用的地方有很多,所以在bash中作为判断式时,中括号的两端需要有空格来分隔.在使用中需要注意: 在中括号内的每个组件都需要有空格键来分隔 在中括号内的变量,最好以双引号括号起来,例如"$HOME" 在中括号内的常量,最好以单或

shell脚本学习笔记之常见语法结构用法

一,变量 1.变量赋值和替换 语法:variable=value variable="value1 value2" echo  $variable/$"{variable}"   屏幕上显示赋值 echo  $"{variable+b}"  将已经赋值的变量重新设值,临时生效 echo  $"{variable:=value} 屏幕上显示value(前提是value没有被赋值) echo  $"{variable:-value