• shell函数例子 start()和stop()就是函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/sh
#
# Start logging
#

SYSLOGD_ARGS=-n
KLOGD_ARGS=-n
[ -r /etc/default/logging ] && . /etc/default/logging

start() {
printf "Starting logging: "
start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid --exec /sbin/syslogd -- $SYSLOGD_ARGS
start-stop-daemon -b -S -q -m -p /var/run/klogd.pid --exec /sbin/klogd -- $KLOGD_ARGS
echo "OK"
}

stop() {
printf "Stopping logging: "
start-stop-daemon -K -q -p /var/run/syslogd.pid
start-stop-daemon -K -q -p /var/run/klogd.pid
echo "OK"
}

case "$1" in #这里就是执行脚本的时候,后后面带的参数, 如果带了start参数就执行start函数
#$1就是取传入的第一个参数。$0是取脚本的名字(包括了路径)
start)
cat /etc/os-release
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac

  • 扩展
    $PS1可以用来修改命令行的提示符。
    $?可以用来获取一个函数的返回值,上一个命令的返回状态。

易错问题

判断,变量,各种语句之间尽量加上空格。