Shell学习(五)

shell脚本开发之函数

把复杂的命令执行过程,通过逻辑代码,组成一个脚本文件,再去执行该文件。(function)

函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 标准定义
function name() {
<commond>
}

# 偷懒
function name {
<commond>
}

# 超级偷懒
name() {
<commond>
}
  1. 定义和调用在同一个文件,直接函数名调用
  2. 定义和调用不在同一个文件,可以 source xx.sh 加载到 shell 环境中。就可以调用。
  3. 查看当前定义的函数,可以 set | grep ^name 查看。

实践

三岁小孩都会,不写了

函数传参

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

# 定义函数

hello() {
echo "Hello world!!!"
}

helloP() {
echo "Hello, your param is $1 $2 $3, 一共是$#个参数"
}
1
2
3
4
5
6
7
8
9
10
#!/bin/bash

# 执行函数
path=`pwd`
[ -f $path/func.sh ] && {
. $path/func.sh
} || exit

hello
helloP a b c

结果

检测网站是否可访问

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
#!/bin/bash

# 检测网站是否可访问
function usage() {
echo "Usage: $0 url"
exit 1
}

check_url() {
wget --spider -q -o /dev/null --tries=1 -T 5 $1

if [ "$?" == 0 ]; then
echo "$1 is running..."
else
echo "$1 is down..."
fi
}

main() {
if [ "$#" -ne "1" ]; then
usage
fi
check_url $1
}

main $*

检测结果

美化输出

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
#!/bin/bash

# 检测网站是否可访问

# 美化
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions; then
. $lsb_functions
else
init_functions="/etc/init.d/init-functions"
if test -f $init_functions; then
. $init_functions
fi
fi

function usage() {
echo "Usage: $0 url"
exit 1
}

check_url() {
wget --spider -q -o /dev/null --tries=1 -T 5 $1

if [ "$?" == 0 ]; then
log_success_msg "$1 is running..."
else
log_failure_msg "$1 is down..."
fi
}

main() {
if [ "$#" -ne "1" ]; then
usage
fi
check_url $1
}

main $*

美化结果

评价是:没啥用,更丑了…

rsync 启停脚本开发





完结撒花!!!

文章作者: Shengyaqingfeng
文章链接: https://creazyboyone.github.io/shell5/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Shengyaqingfeng's Blog