您的位置:首页 > 运维架构 > Shell

shell编程中函数的应用

2015-08-11 16:32 489 查看
函数: 代码复用

库:so

定义函数:

结构化编程,不能独立运行,需要调用时执行,

function 函数名 {

command

}

函数名

FUNCNMAE () {

command

}

自定义执行状态返回值:

return #

0-255

接受参数的函数:

./a.sh m n

#!/bin/bash

cat << EOF

d|D)show disk usages

m|M)show memory usages

s|S)show swap usages

q|Q)quit.

EOF

read -p "Your choice:" CHOICE

until [ $CHOICE == "q" -o $CHOICE == "Q" ];do

case $CHOICE in

d|D)df -h;;

m|M)free -m|grep "^Mem" ;;

s|S)free -m|grep "^Swap" ;;

*)

cat << EOF

d|D)show disk usages

m|M)show memory usages

s|S)show swap usages

q|Q)quit

EOF

read -p "Your choice:" CHOICE

esac

cat << EOF

d|D)show disk usages

m|M)show memory usages

s|S)show swap usages

q|Q)quit

EOF

read -p "Your choice:" CHOICE

done

使用函数

#!/bin/bash

function showmenu {

cat << EOF

d|D)show disk usages

m|M)show memory usages

s|S)show swap usages

q|Q)quit.

EOF

}

showmenu

read -p "Your choice:" CHOICE

until [ $CHOICE == "q" -o $CHOICE == "Q" ];do

case $CHOICE in

d|D)df -h;;

m|M)free -m|grep "^Mem" ;;

s|S)free -m|grep "^Swap" ;;

*)

showmenu

read -p "Your choice:" CHOICE

esac

showmenu

read -p "Your choice:" CHOICE

done



#!/bin/bash

showmenu () {

cat << EOF

d|D)show disk usages

m|M)show memory usages

s|S)show swap usages

q|Q)quit.

EOF

}

showmenu

read -p "Your choice:" CHOICE

until [ $CHOICE == "q" -o $CHOICE == "Q" ];do

case $CHOICE in

d|D)df -h;;

m|M)free -m|grep "^Mem" ;;

s|S)free -m|grep "^Swap" ;;

*)

showmenu

read -p "Your choice:" CHOICE

esac

showmenu

read -p "Your choice:" CHOICE

done

引用函数执行结果

#!/bin/bash

#

TWOINT () {

A=9

B=7

C=$[$A+$B]

echo $C

}

M=11

SUM=$[$M+`TWOINT`]

echo $SUM

引用函数执状态结果:

#!/bin/bash

#

TWOINT () {

A=9

B=7

C=$[$A+$B]

echo $C

}

M=11

SUM=$[$M+`TWOINT`]

echo $SUM

echo $?

测试是否添加用户

#!/bin/bash

ADDUSER(){

USERNAME=hadoop

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

   useradd $USERNAME

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

   return 0

else

   return 1

fi

#!/bin/bash

ADDUSER(){

USERNAME=hadoop

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

   useradd $USERNAME

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

   return 0

else

   return 1

fi

参数传递

#!/bin/bash

#

TWOINT () {

echo $[$1+$2]

}

TWOINT 5 6

SUM=`TWOINT 5 6`

echo $SUM

函数复用

#!/bin/bash

#

TWOINT () {

echo $[$1+$2]

}

for I in {1..10};do

  let J=$[$I+1]

  TWOINT $I $J

done

#!/bin/bash

#

TWOINT () {

echo $[$1+$2]

}

for I in {1..10};do

  let J=$[$I+1]

  echo "$I+$J=`TWOINT $I $J`"

done

#!/bin/bash

ADDUSER(){

USERNAME=$1

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

   useradd $USERNAME

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

   return 0

else

   return 1

fi

}

for I in {1..10};do

ADDUSER user$I

if [ $? -eq 0 ];then

   echo "add user user$I finished."

else

  echo "add user$I Failure"

fi

done

ping主机看是否在线

#/bin/bash

#

PING() {

  for I in $1;do

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

    return 0

    else

    return 1

   fi

 done

}

for I in {250..254};do

4000
  PING 172.16.40.$I

  if [ $? -eq 0 ];then

     echo "172.16.40.$I is up."

  else

     echo "172.16.40.$I is down."

  fi

done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: