linux+shell+func,Linux shell函数使用

一、环境说明

系统:ubuntu12.04TLS

bash版本:GNU bash, 版本 4.2.25(1)-release (x86_64-pc-linux-gnu)

二、函数定义结构[function] function_name()

{

command1

......

commandn

}

关键字function可以省略

三、函数调用方式function_name arg1 arg2 arg3 ....

说明:

(1)shell脚本是顺序解释执行的,所以使用前需要定义。函数要在使用前定义。

函数名可以和系统中的命令重复,shell解释时首先在shell文件中查找,找到就执行,否则根据            path路径去查找系统命令

函数只在当前shell中起作用,不输出到子shell中

(2)函数中参数的使用

<1>$0, $1,......$n 表示命令行参数

$0表示函数名字

$1表示arg1

$2表示arg2

......

这个和C语言main函数char *argv[]相似,argv[0]表示程序名,argv[1]表示第一个参数...

<2> $#    命令行参数个数(不包含函数名/文件名)

$?    前一个命令的退出状态

$$     正在执行进程的ID

$@    包含所有命令行参数“$1,$2,....”, 单独引用

$*      包含所有命令行参数“$1,$2,.....”, 整体引用

(3)变量

全局变量:在脚本的其他任何地方都能够访问该变量,默认声明的变量都是全局变量。

局部变量:只能在声明变量的作用域内访问。使用 local 关键字声明局部变量。

(4)函数返回值

<1>不指定返回值,则返回值为函数中最后一条命令执行的结果

<2>显示使用return 返回0 - 255

四、调试

(1)只做语法检测,不执行脚本bash -n ./script_name.sh

(2)启动调试bash -x ./script_name.sh

(3)局部调试

修改脚本,将要调试的部分用set -x 和set +x包裹起来set -x

...

command

...

set +x

五、实例#!/bin/bash

j=9 //全局变量

function sum()

{

echo  "参数总共有$#个"

echo  "函数名为:$0"

for i in $@

do

echo  "参数:$i"

done

echo "pid=$$"

echo "in func j=$j"

local j=8  #在这之前对j的操作就是对全局变量j的操作

echo "local j=$j"

#这以后对j的操作就是对这个局部变量的操作

m=10 #m为全局变量

}

sum 1 2 3 4 5 #函数调用

echo "global j=$j"

echo "global m=$m"

执行 ./script.sh

结果为:

参数总共有5个

函数名为:./test.sh

参数:1

参数:2

参数:3

参数:4

参数:5

pid=8633

in func j=9

local j=8

global j=9

global m=10

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值