function:函数
函数只有被调用才会执行
如何调用:给定函数名
函数名出现的地方,会被自动替换为函数代码
函数的生命周期:被调用时创建,返回时终止
return命令返回自定义状态结果
0:成功
1-255:失败
语法一:
function f_name {
...函数体...
}
语法二:
f_name(){
...函数体...
}
练习: 写一个脚本,完成如下要求
1.脚本可接受参数:start,stop,restart,status
2.如果参数非此四者之一,提示使用格式后报错退出
3.如果是start,则创建/var/lock/subsys/SCRIPT_NAME,并显示启动成功
考虑: 如果事先已经启动过一次,该如何处理
4.如果是stop,则删除/var/lock/subsys/SCRIPT_NAME,并显示停止完成
考虑: 如果事先已然停止过了,该如何处理
5 如果是restart,则先stop,在start
考虑:如果本来没有start,如何处理
6.如果是status,则:
如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示”SCRIPT_NAME is running“
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示”SCRIPT_NAME is stopped“
#!/bin/bash
proc=$(basename $0)
file=/var/lock/subsys/$proc
function start {
if [ -e $file ]; then
echo "$proc服务已启动。。。"
else
touch $file
if [ $? -eq 0 ]; then
echo "$proc服务启动成功"
else
echo "$proc服务启动失败"
fi
fi
}
function stop {
if [ -e $file ]; then
rm -rf $file
if [ $? -eq 0 ]; then
echo "$proc服务停止成功"
else
echo "$proc服务停止失败"
fi
else
echo "$proc服务已停止"
fi
}
function restart {
if [ -e $file ]; then
stop
start
else
start
fi
}
function status {
if [ -e $file ]; then
echo "$proc is running"
else
echo "$proc is stopped"
fi
}
while true; do
case $option in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
esac
read -p "Enter an option(start or stop or restart or status):" option
if [[ $option != "start" && $option != "stop" && $option != "status" && $option != "restart" ]]; then
read -p "wrong option,Enter an option again:" option
fi
done
test18.sh 脚本加入服务:
cp test18.sh /etc/rc.d/init.d chkconfig --add test18.sh chkconfig --list test18.sh chkconfig --level 2345 testsrv on
练习: 添加10个用户
#!/bin/bash
# 添加是个用户,函数实现
function adduser {
if [ $# -lt 1 ]; then
return 2 # 2: no arguments
fi
if id $1 &> /dev/null; then
echo "$1 exists."
return 1
else
useradd $1
[ $? -eq 0 ] && echo "add $1 success" && return 0
fi
}
for i in $(seq 1 1 10);do
adduser myuser$i
done
函数递归:函数直接或间接调用自身
1.阶乘:
#!/bin/bash
fact() {
if [ $1 -eq 0 -o $1 -eq 1 ]; then
echo 1
else
echo $[$1*$(fact $[$1-1])]
fi
}
fact 5
2.斐波那契
#!/bin/bash
fab (){
if [ $1 -eq 1 -o $1 -eq 2 ]; then
echo 1
else
echo $[$(fab $[$1-1])+$(fab $[$1-2])]
fi
}
fab 10
来源:https://www.cnblogs.com/ckh2014/p/10765191.html