文档介绍:第10章bash 脚本编程
本章内容要点
Shell 脚本的编制、执行和调试
Shell 脚本的成分和编码规范
Shell 变量替换扩展、数值计算、输入输出
变量分类,位置参数变量和特殊参数变量
条件测试(文件测试、字符串测试、整数测试)
分支流程控制(if、case)
循环流程控制(for、while、until、select)
函数的定义和调用、返回值
使用循环分析命令行参数
本章学习目标
熟悉Shell 脚本的编码规范,掌握执行和调试方法
掌握对变量进行整数运算和间接引用的方法
理解位置参数变量和特殊参数变量的用途
掌握条件测试的使用[] 、[[]]、(())
掌握各种流程控制语句的使用
if、case
for、while、until、select、break、continue
掌握函数的定义、调用和传递返回值的方法
掌握命令行参数、位置参数的操作(shift、getopts)
SHELL编程基础
2018年2月3日
4
Shell脚本和Shell编程
当命令不在命令行中执行,而是从一个文件中执行时,该文件就称为 Shell 脚本。
Shell 脚本是纯文本文件。
Shell 作为后缀名,但不是必须。
Shell 脚本是以行为单位的,在执行脚本的时候会分解成一行一行依次执行。
Shell 是一种功能强大的解释型编程语言
通常用于完成特定的、较复杂的系统管理任务
Shell 脚本语言非常擅长处理文本类型的数据
2018年2月3日
5
Shell脚本的成分
程序元素
保留字、运算符、表达式
变量、数组、输入输出
控制结构(顺序、分支、循环、子程序调用)
Shell功能【参见第2、3章内容】
执行命令(内置命令、外部命令、自编程序)
重定向、管道、命令替换、命令聚合
通配符、注释符、……
Shell环境
2018年2月3日
6
Shell 脚本的建立与执行
Shell 脚本的建立
使用文本编辑器编辑脚本文件
$ vi script-file
为脚本文件添加可执行权限
$ chmod +x script-file
Shell 脚本的执行
在子Shell中执行
$ bash script-file
$ script-file
在当前Shell中执行
$ source script-file
$ . script-file
2018年2月3日
7
PATH 环境变量的默认值不包含当前目录,
若脚本文件在当前目录,应使用./script-file
PATH 环境变量的默认值包含~/bin 目录,
用户可以将自己的脚本文件存放在~/bin 目录,
之后即可直接调用脚本文件名执行脚本了
Shell 脚本的编码规范
以#! 开头:通知系统用何解释器执行此脚本
#!/bin/bash
#!/bin/ksh
以注释形式说明如下的内容:
# 脚本名称
# 脚本功能
# 作者及联系方式
# 版本更新记录
# 版权声明
# 对算法做简要说明(如果是复杂脚本)
2018年2月3日
8
Shell脚本举例(1)
2018年2月3日
9
#!/bin/bash
# This is the first Bash shell program
# Scriptname:
echo
echo -e "Hello $LOGNAME, \c"
echo "it's nice talking to you."
echo -n "Your present working directory is: "
pwd # Show the name of present directory
echo
echo -e "The time is `date +%T`!. \nBye"
echo
Shell脚本举例(2)
2018年2月3日
10
#!/bin/bash
## Script Name:/etc/
# 使用NTP的客户端命令ntpdate与远程NTP服务器进行同步
# 也可以用局域网内的NTP服务器替换 pool.
/usr/sbin/ntpdate -s pool.
# 更改硬件时钟时都会记录在/etc/adjtime文件中
# 使hwclock根据先前的记录来估算硬件时钟的偏差,
# 并用来校正目前的硬件时钟
/sbin/hwclock --adjust
# 将系统时钟同步到硬件时钟
/sbin/hwclock –systohc