函数:功能,function
代码重用:
库:so
定义一个函数的方法有2种
第一种:
function FUNCNAME{
command
}
第二种:
FUNCNAME () {
command
}
写一个脚本“输入d显示硬盘使用信息,输入m显示内存使用信息,输入s显示swap使用信息,输入q则退出”
#!/bin/bash
#
cat << EOF
d|D) show diskusages
m|M) show memoryusages
s|S) show swapusages
q|Q) quit
EOF
read -p "Yourchoice:" CHOICE
until [ $CHOICE ==‘q‘ -o $CHOICE == ‘Q‘ ];do
case $CHOICE in
d|D)
df -lh
;;
m|M)
free -m |grep"^Mem"
;;
s|S)
free -m |grep"^swap"
;;
*)
cat << EOF
d|D) show diskusages
m|M) show memoryusages
s|S) show swapusages
q|Q) quit
EOF
read -p "Yourchoice:" CHOICE
;;
esac
cat << EOF
d|D) show diskusages
m|M) show memoryusages
s|S) show swapusages
q|Q) quit
EOF
read -p "Yourchoice:" CHOICE
done
把cat做成函数,后调用
#!/bin/bash
#
ABC () {
cat << EOF
d|D) show diskusages
m|M) show memoryusages
s|S) show swapusages
q|Q) quit
EOF
}
ABC
read -p "Yourchoice:" CHOICE
until [ $CHOICE ==‘q‘ -o $CHOICE == ‘Q‘ ];do
case $CHOICE in
d|D)
df -lh
;;
m|M)
free -m |grep"^Mem"
;;
s|S)
free -m |grep"^swap"
;;
*)
ABC
read -p "Yourchoice:" CHOICE
;;
esac
ABC
read -p "Yourchoice:" CHOICE
done
return # 定义执行状态返回值,函数不执行return后的语句。
#:0-255
如果用户调用函数如果用户admin存在则返回1,如果用户不存在则创建用户,并设置密码,返回值0,
如果返回0 则显示用户添加成功,如果返回1则显示用户已存在
#!/bin/bash
#
function ABC {
USERNAME=‘admin‘
if ! id -u $USERNAME &>/dev/null;then
useradd $USERNAME
echo "$USERNAME" |passwd --stdin&> /dev/null
return 0
else
return 1
fi
}
ABC
if [ $? -eq 0];then
echo "add user finished"
else
echo "user exist"
fi
接受参数的函数:
FUNCTION a b
$1 : a
$2 : b
1到10任意2个相邻整数相加
#!/bin/bash
#
function QWE {
echo $[$1+$2]
}
for I in {1..10};do
let J=$I+1
echo "$I pluse$J is `QWE $I $J`"
done
修改上面的脚本,让脚本可以连续创建10个用户
#!/bin/bash
#
function ABC {
USERNAME=$1
if ! id -u $USERNAME &>/dev/null;then
useradd $USERNAME
echo "$USERNAME" |passwd --stdin&> /dev/null
return 0
else
return 1
fi
}
for I in {1..10};do
ABC user$I
if [ $? -eq 0];then
echo "add user finished"
else
echo "user exist"
fi
done
练习:写一个脚本,判定192.168.0.200-192.168.0.254之间的主机哪些在线。要求:
- 1. 使用函数来实现一台主机的判定过程:
- 2. 在主程序中来调用此函数判定指定范围内的所有主机的在线情况。
#!/bin/bash
#
function PING {
if ping -c 1 -w 1 192.168.0.$I &> /dev/null;then
return 0
else
return 1
fi
}
for I in {200..254}; do
PING $I
if [ $? -eq 0 ];then
echo "192.168.0.$I is up"
else
echo "192.168.0.$I is down"
fi
done
写一个脚本:使用函数完成
1 . 函数能够接受一个参数,参数为用户名:
判断一个用户是否存在
如果存在,就返回此用户的shell和UID并返回正常状态值
如果不存在,就说此用户不存在;并返回错误状态值;
2.在程序中调用函数:
扩展1:在主主程序中,让用户自己输入用户名,传递给函数来进行判断;
扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名:如果用户输入的用户不存在,请用户从新输入;但如果用户输入的是q或者Q就退出;
#!/bin/bash
#
function IDUSER {
if id -u $1&>/dev/null ;then
echo " $1 shell is :`cat /etc/passwd|grep "^$1\b" |awk -F : ‘{print $7}‘`"
echo " $1 UID is: `id -u $1`"
return 0
else
echo "user not exist."
return 1
fi
}
read -p"username:" USERNAME
until [ $? == ‘q‘-o $? == ‘Q‘ ] ; do
IDUSER $USERNAME
if [ $? -eq 0];then
read -p"pleasw input again:" USERNAME
else
read -p "no$USERNAME,please input again::" USERNAME
fi
done