shell之case和function
生活随笔
收集整理的這篇文章主要介紹了
shell之case和function
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
case是一種判斷的性質(zhì),當(dāng)變量數(shù)量確定,用case是一個(gè)很好的表現(xiàn)方式。case常見最多的就就是服務(wù)的啟動(dòng)腳本了,通過第一個(gè)參數(shù)來進(jìn)行確定。 case $變量名稱 in
? "參數(shù)內(nèi)容")? \\?例如? ?"y"|"Y")
???? 命令集合
???? ;;
? "參數(shù)內(nèi)容")
???? 命令集合
???? ;;
? *)??????????????? \\代表其他
???? 命令集合
???? ;;
esac /path/to/script? patten1 patten2
??????????????????? $1???? $2
$1 $2 代表腳本執(zhí)行時(shí)后面輸入的第一個(gè)參數(shù)
$# 代表參數(shù)的個(gè)數(shù)
$@? 將參數(shù)輸出 函數(shù)在shell腳本中的作用就是將操作重復(fù)的命令統(tǒng)一集合起來,便于管理、執(zhí)行。
?? function?? fun_name() {
?????????? 命令集
?? }
??
?例子:這個(gè)是在linux系統(tǒng)的服務(wù)腳本中截取的部分,用作理解,
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
} start() { check # Check for kernel support
??????? [ -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
} stop() { check echo -n $"Stopping acpi daemon: "
??????? killproc /usr/sbin/acpid
??????? RETVAL=$?
??????? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/acpid
??????? echo
??? return $RETVAL
} restart() {
??????? stop
??????? start
}
reload() { check trap "" SIGHUP
??????? 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
說明:
? 創(chuàng)建了check\start\stop\restart\reload的函數(shù),每個(gè)函數(shù)下面都有各自的命令集合,后面每個(gè)符合case選項(xiàng)的每執(zhí)行一次函數(shù)就相當(dāng)于執(zhí)行函數(shù)內(nèi)部的命。簡化了腳本的結(jié)構(gòu)。
? "參數(shù)內(nèi)容")? \\?例如? ?"y"|"Y")
???? 命令集合
???? ;;
? "參數(shù)內(nèi)容")
???? 命令集合
???? ;;
? *)??????????????? \\代表其他
???? 命令集合
???? ;;
esac /path/to/script? patten1 patten2
??????????????????? $1???? $2
$1 $2 代表腳本執(zhí)行時(shí)后面輸入的第一個(gè)參數(shù)
$# 代表參數(shù)的個(gè)數(shù)
$@? 將參數(shù)輸出 函數(shù)在shell腳本中的作用就是將操作重復(fù)的命令統(tǒng)一集合起來,便于管理、執(zhí)行。
?? function?? fun_name() {
?????????? 命令集
?? }
??
?例子:這個(gè)是在linux系統(tǒng)的服務(wù)腳本中截取的部分,用作理解,
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
} start() { check # Check for kernel support
??????? [ -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
} stop() { check echo -n $"Stopping acpi daemon: "
??????? killproc /usr/sbin/acpid
??????? RETVAL=$?
??????? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/acpid
??????? echo
??? return $RETVAL
} restart() {
??????? stop
??????? start
}
reload() { check trap "" SIGHUP
??????? 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
說明:
? 創(chuàng)建了check\start\stop\restart\reload的函數(shù),每個(gè)函數(shù)下面都有各自的命令集合,后面每個(gè)符合case選項(xiàng)的每執(zhí)行一次函數(shù)就相當(dāng)于執(zhí)行函數(shù)內(nèi)部的命。簡化了腳本的結(jié)構(gòu)。
轉(zhuǎn)載于:https://blog.51cto.com/bensonzy/605102
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的shell之case和function的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 傲游浏览器新浪微博插件v2发布
- 下一篇: Quest Recovery Manag