shell之路 shell核心语法【第五篇】函数

为什么使用函数

代码简洁

函数就是把一段代码放到一个单元中

和普通变量的目的一样:a='hello world'封装一段数据,让变量名a具有'hello world'的内容

函数:封装一段代码,让函数名具有一段代码的功能

函数定义

1.Shell和其它语言不太一样,函数里的变量默认是全局变量(函数外部也可以使用),用local来定义为局部变量(函数内才能使用的变量);

2.函数返回值,可以显式增加return语句;如果不加,会将最函数内的最后一条命令运行结果作为返回值。

 语法:

函数名()
{
       commands
}
或
function 函数名()
{
       commands
}  

第一个函数

#!/bin/bash
hs ()
{
  echo "666"
}

hs  # 函数的使用

全局变量

1.默认情况下,函数内可以直接操作全局变量

#!/bin/bash

a=1
hs ()
{
  echo $a
  let a=a+2
}

hs 3 4
echo $a

###输出
1
3

2.默认情况下,函数内定义的变量也是全局变量

#!/bin/bash

hs ()
{
  b=2
  echo $b
}

hs
echo $b

###输出
2
2 

3.如果函数内变量名和外部重名,外部变量数据会被覆盖

#!/bin/bash

a=1
hs ()
{
  a=2
  echo $a
  let a=a+2
}

hs 3 4
echo $a

###输出
2
4

局部变量  

1.局部变量和全部变量不重名

#!/bin/bash
a = 1

hs ()
{
  local b=2
  echo $b
}

hs
echo $b  # 该行无输出

###输出
b

2.局部变量和全局变量重名

#!/bin/bash
a=1

hs ()
{
  local a=2
  a=a+1
}

hs
echo $a

###输出
1

函数参数

更多参数使用见  shell之路【第二篇】shell简介与入门  变量/特殊变量列表

#!/bin/bash
hs ()
{
  let z=$1+$2
  echo "$z"
  ls lll
  #return 6
}

hs 3 4

echo $?

函数返回值 

1.函数中使用return返回时返回值的数据类型必须是数字,echo返回值的数据类型没有限制

2.如果要接收函数的返回值,可以用$(函数 参数)或者$?

return

#!/bin/bash
hs ()
{
  let z=$1+$2
  return 6
}

hs 3 4
echo $?

echo 

返回数字

#!/bin/bash
hs ()
{
  let z=$1+$2
  echo 6
}

res=$(hs 3 4)  # 或者res=`hs 3 4`
echo $res

###输出
6

返回字符串  

#!/bin/bash
hs ()
{
  let z=$1+$2
  echo "false"
}

res=$(hs 3 4)  # 或者res=`hs 3 4`
echo $res

###输出
false

  

  

 

posted @ 2019-07-05 10:23  沐风先生  阅读(311)  评论(0编辑  收藏  举报