以上就是 shell 脚本的全部内容了,最后用书上的几个练习实例来总结一下 shell 脚本编程。
编写一个函数,利用函数求出传递给它的两个值的和,并使它对所有的 shell 都可用。
#!/bin/bash
# 加法函数,输出传递给它的两个数的和
add () {
expr $1 + $2
}
# 测试函数
add 1 2
# 将函数放到 /etc/bashrc 中即可对所有的 shell 都可用
编写一个脚本,该脚本从一个文件的末尾读取信息并添加到另一个文件的末尾。为了让这个脚本更有用,可以让它从一个日志文件中读取信息。
#!/bin/bash
# 通过重定向将 tail 命令在一个文件中取到的最后一行添加都另一个文件末尾
tail file.txt -n 1 >> log.txt
编写一个试图被零除的脚本。在结束执行之前它应该发送一个错误消息到屏幕上来。
#!/bin/bash
# 收到除零错误消息时的回调
onFPE () {
# 发生除零错误时输出一条信息
echo 'FPE ERROR'
}
# 捕获 FPE 即除零错误消息,设置回调函数
trap onFPE 8
# 进行一次除零计算错误触发
expr 3 / 0
为系统管理员编写一段脚本。该脚本应该告诉管理员日期,已登录的用户以及哪些文件正在使用之中。在退出之前,脚本应该向所有用户发送一条信息,告诉大家管理员现在正在办公室里。
#!/bin/bash
# 显示时间
date
# 显示当前用户
who | awk '{print $1}'
# 显示当前打开的文件。
# lsof 列出所有打开文件的信息,
# tail 过滤掉表头,最后用 awk 截取文件名的行
lsof | tail -n +2 | awk '{print $9}'
# 退出前发送广播
wall 'hello!'
综上所述,shell 脚本让我们以更灵活的方式组合和使用 shell 命令并便于重用,虽然它的控制结构和数值计算略显薄弱,但其与 shell 命令完全兼容的特性让它成为管理和使用 linux 的一个必备工具。