function命令简介:

       定义函数

1.命令格式:

function 函数名 {

  content      #内容

 }

或者

   函数名() {

   content  #内容

}

调用函数只要在需要调用的地方输入函数名即可

2.命令功能:

使得脚本简洁,调用重复内容

3.命令参数:

   自定义函数执行状态返回值

   return #   #为0-255

   且函数可以接受参数

   FUNCTION () {

    content

 }

  FUNCTION 5 6

  $1=5

  $2=6

4.命令实例:

 1、使用函数添加用户,函数执行状态返回值使用return定义,并传输一个参数给函数。

  vim useradd.sh

#!/bin/bash

#

 USERADD () {

     USERNAME=$1

   if ! id -u $USERNAME &> /dev/null ; then

     useradd $USERNAME

     echo "$USERNAME" | passwd --stdin $USERNAME &> /dev/null

       return 0

    else

      echo "$USERNAME is exist."

    return 3

   fi

 }

 USERADD $1

 if [ $? -eq 0 ]; then

   echo "useradd user finished"

  else

   echo "useradd user failure"

 fi

 2、使用函数调用,进行ping命令

vim PING.sh

  #!/bin/bash

  #

  

   PING() {

      if ping -c 1 -W 1 $1 &> /dev/null ; then

           return 0

        else

           return 1

      fi

   }

  for I in {96..106}; do

     if PING  192.168.1.$I &> /dev/null ; then

          echo "192.168.1.$I is up"

         else

          echo "192.168.1.$I is down"

     fi

  done

  

  for I in {96..106}; do

     if PING  172.16.1.$I &> /dev/null ; then

         echo "172.16.1.$I is up"

       else

         echo "172.16.1.$I is down"

     fi

  done

3、写一个脚本;使用函数完成

  1、函数能够接受一个参数,参数为用户名;判断一个用户是否存在

     如果存在,就返回此用户的shell和UID;并返回正常状态值

     如果不存在,就说此用户不存在;并返回错误状态值

  2、在主程序中调用函数;

  扩展1:在主程序中,让用户自己输入用户后,传递给函数来进行判断;

  扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户

        如果用户输入的用户不存在,请用户重新输入;但如果用户输入的是Q或q就退出;

 #!/bin/bash

 #

 USERID () {

   if id -u $1 &> /dev/null ; then

       echo "`grep '^$1' /etc/passwd | awk -F : '{print $NF,$3}'`"

       return 0

     else

       echo "$1 is not exist."

      return 3

   fi

}   

 read -p "Input one UserName:" USERNAME

 until [ $USERNAME == 'q' -o $USERNAME == 'Q' ]; do

     USERID $USERNAME

        if [ $? -eq 0 ]; then

            read -p "Input one UserName:" USERNAME 

          else

            read -p "No $USERNAME,please Input one UserName Again:" USERNAME

        fi

done