Shell函数

Shell函数

 

 

 

               一、Shell函数定义

               二、函数返回值

               三、函数传参

               四、函数变量的作用范围

               五、递归

                 1)阶乘

                 2)递归目录

               六、创建函数库

 

 

 

 

一、Shell函数定义

将命令序列按格式写在一起。

可方便重复使用命令序列。

格式

(1)

function 函数名{
命令序列 }

(2)

函数名() {
命令序列 }

二、函数返回值

return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值。

使用原则

①函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码。

②退出状态码必须是0-255,超出时值将为除以256取余。

命令

#!/bin/bash

function a {
  read -p "请输入一个值:" b
  return $[$b * 2]

}
a
echo $?

例:

Shell函数

 

Shell函数

使用echo输出,值没有范围

命令

#!/bin/bash

a() {
  read -p "请输入一个值:" b
  echo $[$b * 2]

}
result=$(a)
echo $result

例:

Shell函数

 

Shell函数

三、函数传参

命令

#!/bin/bash

sum1() {
  sum=$[$1+$2]
  echo $sum

}
read -p "输入第一个值:" a
read -p "输入第二个值:" b

sum1 $a $b
res=$(sum1)
echo $res

例:

Shell函数

 

Shell函数

命令

#!/bin/bash

sum1() {
  sum=$[$1 + $2]
  echo $sum

}
read -p "输入第一个参数:" a
read -p "输入第二个参数:" b
sum1 $a $b

例:

Shell函数

 

Shell函数

命令

#!/bin/bash

sum1() {
  sum=$[$1 + $2]
  echo $sum

}
sum1 $1 $2

例:

Shell函数

 

Shell函数

四、函数变量的作用范围

函数在Shell脚本中仅在当前Shell环境中有效。

Shell脚本中变量默认全局有效。

将变量限定在函数内部使用local命令。

命令

#!/bin/bash

a() {
  i=8
  echo $i
}
i=9
a
echo $i

例:

Shell函数

 

Shell函数

将变量限定在函数内部

命令

#!/bin/bash

a() {
  local i
  i=8
  echo $i
}
i=9
a
echo $i

例:

Shell函数

 

Shell函数

五、递归

递归:函数调用自己本身的函数。

1)阶乘

命令

#!/bin/bash

a() {
  if [ $1 -eq 1 ];then
    echo 1
  else
    local b=$[$1 - 1]
    local c=$(a $b)
    echo $[$1 * $c]
  fi

}
read -p "请输入一个阶乘数字:" n
c=$(a $n)
echo "$n 的输出结果:" $c

例:

Shell函数

 

Shell函数

2)递归目录

命令

#!/bin/bash

a() {
  for i in $(ls $1)
  do
    if [ -d "$1/$i" ];then
      echo "$2$i"
      a "$1/$i" " $2"
  else
      if [ ! -x "$1/$i" ];then
         echo "$2$i"
      fi
    fi
  done
}
############ main #############
OLDIFS=$IFS
IFS=$IFS‘:‘

for b in $PATH
do
  echo $b
  a "$b" " "
done

例:

Shell函数

 

Shell函数

六、创建函数库

命令

[root@localhost ~]# vim 111.sh
#!/bin/bash

fact() {
  if [ $1 -eq 1 ];then
    echo 1
  else
  local temp=$[$1 - 1]
  local result=$(fact $temp)
  echo $[$1 * $result]
  fi
}

jiafa() {
  echo $[$1 + $2]
}
jianfa() {
  echo $[$1 - $2]
}
chengfa() {
  echo $[$1 * $2]
}
chufa() {
  if [ $2 -ne 0 ];then
    echo $[$1 / $2]
  else
    echo "除数不能为0"
  fi
}

 

[root@localhost ~]# vim 222.sh
#!/bin/bash
. 111.sh

v1=$1
v2=$2

res1=$(jiafa $v1 $v2)
res2=$(jianfa $v1 $v2)
res3=$(chengfa $v1 $v2)
res4=$(chufa $v1 $v2)
res5=$(fact $v1)

echo "加法的结果为:$res1"
echo "减法的结果为:$res2"
echo "乘法的结果为:$res3"
echo "除法的结果为:$res4"
echo "$1 的阶乘结果为:$res5"

例:

Shell函数

 

Shell函数

 

Shell函数

 

Shell函数

上一篇:Android Studio 插件-Android Styler 的使用 (转)


下一篇:明日直播预告:阿里巴巴集团副总裁与您共同开启”云上新金融“时代。