bash脚本编程之十 函数

函数:功能, function


代码重用:

库:so



脚本编程之函数:


function: 功能


结构化编程,不能独立运行,需要调用时执行,可以被多次调用


定义一个函数:

function FUNCNAME {

  command

}


FUNCNAME() {

  command

}


调用FUNCNAME


自定义执行状态返回值:

return #

0-255 

接受参数的函数:

demo.sh 5 6

$1: 5

$2: 6


练习:写一个脚本,判断192.168.0.200-192.168.0.254之间的主机哪些在线,要求:

1、使用函数来实现一台主机的判断过程

2、在主从程序中来调用此函数判定指定范围内的所有主机的在线情况

  1 #!/bin/bash

  2 #

  3 PING() {

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

  5         return 0

  6   else

  7         return 1

  8   fi

  9 }

 10 

 11 for I in {200..254}; do

 12   PING 192.168.0.$I

 13   if [ $? -eq 0 ]; then #if PING 192.168.0.$I;then

 14         echo "192.168.0.$I is up."

 15   else

 16         echo "192.168.0.$I is down."

 17   fi

 18 done


ps:if里面 ”执行状态“结果0为真,其他为假


写一个脚本:使用函数完成

1、函数能够接受一个参数,参数为用户名;

   判断一个用户是否存在

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

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

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


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

扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名;如果用户输入的用户不存在,请用户重新输入;但如果用户输入的是q或Q就退出;


#!/bin/bash

#

user () {

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

echo "`grep ^$1  /etc/passwd | cut -d: -f3,7`"

   return 0

else

   echo "no $1"

    return 1

fi

}

read -p "please input username:" username

until [ $username == q -o $username == Q ]; do

user $username

if [ $? == 0 ];then

read -p "please input again:" username

else

read -p "no $username,please input again:" username

fi

done



函数也可以接受参数, 即可以向函数传递参数



函数接受一个用户名参数,显示此用户的shell和UID;



写一个函数:接受一命令参数ls


/bin/ls, /mnt/sysroot/bin/ls


/sbin/ifconfig, /mnt/sysroot/sbin/ifconfig


你可能感兴趣的:(return,function,command,null)