case是一种判断的性质,当变量数量确定,用case是一个很好的表现方式。case常见最多的就就是服务的启动脚本了,通过第一个参数来进行确定。
case $变量名称 in
"参数内容") \\ 例如 "y"|"Y")
命令集合
;;
"参数内容")
命令集合
;;
*) \\代表其他
命令集合
;;
esac
"参数内容") \\ 例如 "y"|"Y")
命令集合
;;
"参数内容")
命令集合
;;
*) \\代表其他
命令集合
;;
esac
/path/to/script patten1 patten2
$1 $2
$1 $2 代表脚本执行时后面输入的第一个参数
$# 代表参数的个数
$@ 将参数输出
$1 $2
$1 $2 代表脚本执行时后面输入的第一个参数
$# 代表参数的个数
$@ 将参数输出
函数在shell脚本中的作用就是将操作重复的命令统一集合起来,便于管理、执行。
function fun_name() {
命令集
}
例子:这个是在linux系统的服务脚本中截取的部分,用作理解,
check() {
# Check that we're a privileged user
[ `id -u` = 0 ] || exit 4
function fun_name() {
命令集
}
例子:这个是在linux系统的服务脚本中截取的部分,用作理解,
check() {
# Check that we're a privileged user
[ `id -u` = 0 ] || exit 4
# Check if acpid is executable
test -x /usr/sbin/acpid || exit 5
}
test -x /usr/sbin/acpid || exit 5
}
start() {
check
# Check for kernel support
[ -f /proc/acpi/event ] || exit 1
[ -f /proc/acpi/event ] || exit 1
echo -n $"Starting acpi daemon: "
daemon /usr/sbin/acpid
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/acpid
echo
return $RETVAL
}
daemon /usr/sbin/acpid
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/acpid
echo
return $RETVAL
}
stop() {
check
echo -n $"Stopping acpi daemon: "
killproc /usr/sbin/acpid
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/acpid
echo
return $RETVAL
}
killproc /usr/sbin/acpid
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/acpid
echo
return $RETVAL
}
restart() {
stop
start
}
reload() {
stop
start
}
reload() {
check
trap "" SIGHUP
action $"Reloading acpi daemon:" killall -HUP acpid
RETVAL=$?
return $RETVAL
}
action $"Reloading acpi daemon:" killall -HUP acpid
RETVAL=$?
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
force-reload)
restart
;;
restart)
restart
;;
condrestart)
if [ -f /var/lock/subsys/acpid ]; then
restart
fi
;;
status)
status acpid
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
RETVAL=2
esac
说明:
创建了check\start\stop\restart\reload的函数,每个函数下面都有各自的命令集合,后面每个符合case选项的每执行一次函数就相当于执行函数内部的命。简化了脚本的结构。
转载于:https://blog.51cto.com/bensonzy/605102