shell学习笔记之八(函数)

函数定义:1、无返回值#function为关键字,FUNCTION_NAME为函数名function FUNCTION_NAME(){command1command2…}省略关键字function,效果一样FUNCTION_NAME(){command….}例:1、简单函数声明和调用#!/bin/bashfunction sayHello(){echo “Hello World!”}sayHello注意:1、sayHello调用的时候没有(),sayHello()这样的调用会出错。2、如果先调用再声明,则调用和声明之间不能有其他语句2、计算文件的行数#!/bin/bashif [[ $# -lt 1 ]];thenecho “Please input a filename.”returnfifile=$1countLinefunction countLine(){local line=0while readdolet “line++”;done < $fileecho “$file has $line lines.”}2、函数的返回值return获取返回值的主要方式是$?例:#检测文件是否存在#!/bin/bashfile=$1checkif [ $? -eq 0 ];thenecho “$file exists.”elseecho “$file doesn’t exist.”fifunction check(){if [ -e $file ];thenreturn 0elsereturn 1fi}3、带参数的函数1、位置参数这个和高级语言不一样,在函数声明里没有指定参数,而是直接在函数体里使用,调用的时候直接传入参数即可例:1、检测文件是否存在#!/bin/bashcheck $1 #这里不再使用file变量if [ $? -eq 0 ];thenecho “$1 exists.”elseecho “$1 doesn’t exist.”fifunction check(){if [ -e $1 ];then #函数体里的参数return 0elsereturn 1fi}2、计算两数之和#!/bin/bashfunction add(){local tmp=0i=$1j=$2let “tmp=i+j”return $tmp}add $1 $2echo “$?”2、指定位置参数值使用set内置命令给脚本指定位置参数的值(又叫重置)。一旦使用set设置了传入参数的值,脚本将忽略运行时传入的位置参数(实际上是被set重置了位置参数的值)例:#!/bin/bashset 1 2 3 4count=1for var in $@doecho “Here \$$count is $var”let “count++”done注意:输入时不管有多少参数都重置为四个参数。如:. ./function03.sh a b c d e f结果:Here $1 is 1Here $2 is 2Here $3 is 3Here $4 is 4注意:有什么意义?3、移动位置参数回顾:shift,在不加任何参数的情况下,这个命令可以将位置参数向左移动一位。例:#!/bin/bashuntil [ $# -eq 0 ]doecho “Now \$1 is:$1,total paramert is:$#”shiftdone注意:活用位置参数,$@/$*:所有参数$1..$n:第n个参数,当n大于10时,要将n用()括起来$0:脚本本身当用‘.’执行脚本时为bash当用bash执行脚本时返回的文件名当用./scriptname执行时返回./scriptname$#:所有参数扩展指定左移的位数,,shift n例:#!/bin/bashecho “$0″until [ $# -eq 0 ]doecho “Now \$1 is:$1,total paramert is:$#”shift 2done注意:如果输入命令时指定了奇数个参数,则脚本会陷入死循环。4、函数库为了和普通函数区别,在实践中,建议库函数使用下划线(_)开头加载库函数:1、使用”点”(.)命令2、使用source命令例:1、建立函数库实际上就是写一个都是函数的脚本文件例:建立库lib01.shfunction _checkFileExist(){if [ -e $1 ];thenecho “File:$1 exists”elseecho “File:$1 doesn’t exists”fi}2、使用#!/bin/bash#source ./lib01.sh. ./lib01.sh_checkFileExist $1系统函数库:/etc/init.d/functions(我的系统是ubuntu,没看到这个文件)一个27个函数

没有早一步,也没有晚一步,刚好遇上了你!

shell学习笔记之八(函数)

相关文章:

你感兴趣的文章:

标签云: