Shell函数和脚本参数

1.在脚本中定义函数

functin_name(){   //直接的定义方式
语句块
}

function function_name(){  //使用关键字 function 定义的方式
语句块
}

函数命名规则:

  1. 为了和变量区分,使用小写字母和下划线,以字母开头
  2. 不能使用命令作为函数名
  3. 不能使用特殊符号
  4. 函数名尽力体现功能

2.在脚本中使用函数

在脚本中使用函数名直接调用函数

#! /bin/bash
#this is a  example
#2017/5/12

function hello(){ //使用关键字function
echo "Now is the function hello."
echo "Hello~"
}

hi(){  //不适用关键字function
echo "Now is the function hi."
echo "Hi~"
}

//脚本主体部分,调用定义的函数
echo "Now call the function hello."
hello  //调用函数hello

echo "Now call the function hi."
hi  //调用函数hi

3.向函数传递参数和返回值
脚本的位置变量:http://blog.youkuaiyun.com/wee_mita/article/details/71171849

在函数中获取参数可以像脚本获取参数那样,获取位置变量

#!/bin/bash
#this is a example
#2017/5/12

function A(){   //定义函数A
echo 'expr $1 + $2'   //第一第二个位置参数
}

D= 'A 100 300'      //定义变量D,并且调用函数A,其中100 300  为函数A的第一第二个位置变量
if [ $? = 0 ]      //脚本预定义的变量,判断上一条命令是否执行成功,成功返回0,否则非0,通常为1

    then
    echo "D=$D"            //只返回一个D的值
    echo  "D="$D        //通过变量可以返回多个函数值
else
    echo "Function A fails."
fi

4.返回函数执行状态

在脚本中调用函数后,函数会执行函数结构体中的语句,完成后系统会根据函数中的最后一个语句的执行状态,自动返回函数的执行状态信息,但是有时候函数中关键的语句不是最后一句,这时候就需要使用return语句

return语句:

  1. return:将函数最后一条命令的执行状态作为其状态信息返回
  2. return 0:返回函数成功执行的信息
  3. return 1:返回函数错误的信息

5.使用函数文件调用

需要编写一个较为庞大的脚本时,可能会涉及许多的函数、变量,通常将重众多的函数和变量放在一个单独的脚本文件中

#!/bin/bash
#This is a function definition script
#2017/5/12
#The name of the script is function.example

function hello(){ 
echo "Now is the function hello."
echo "Hello~"
return //将函数最后一条命令的执行状态作为其状态信息返回
}

hi(){  
echo "Now is the function hi."
echo "Hi~"
return //将函数最后一条命令的执行状态作为其状态信息返回
}

调用已经编写好的函数文件:

  • 将函数文件包含在脚本文件中,然后直接进行调用
  • 像变量一样在命令行提示符下使用(在命令行提示符中调用函数文件后,就可以直接调用函数)
#!/bin/bash
#this is a example script
#2017/5/12

../function.example //函数文件的路径应该与脚本文件的路径相同,否则需要输入函数文件的绝对路径或相对路径

echo "Now call the functon hello."
hello John  //调用时传递参数
//在命令行提示符中调用函数

../function.example
hi Alix 

Now is the function hi.     //这是输出
Hi~Alix                    //这是输出

可以将函数文件写入环境变量中,然后像使用命令一样调用自定义的函数,以实现较复杂的功能

6.像脚本传递参数

通常通过位置变量来传递参数,但是位置变量的最大个数为9,如何传递超过9个变量呢,一般采用shift命令

shift命令的用法比较特殊,它没有选项和参数,直接运行命令即可。运行shift命令时,位置变量就像一个可以移动的“指针”,每执行一次,位置变量指向的参数将会向移动一位

即使用shift命令后,位置变量 1使 2的值,以此类推。随着shift命令的使用,位置变量$1的值会不断变化,直到移动到最后一个参数之后

Shift命令的作用是将所有的位置变量应用的参数往后移动一位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值