linux脚本编写方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shell的产生与发展
Shell的作用
操作系统与用户进行交互操作的界面
用户 命令 结果
Shell
操作系统
提供脚本语言编程环境,方便用户自动批量处 理大量的工作任务
Shell的产生与发展(Cont.)
Shell的种类
Bourne shell( Stephen Bourne,1979年) C shell (BillJoy ,70年代末期) Korn shell (DavidKorn,80年代中期 )
命令3;;
esac
函数
函数定义
函数名( )
{
命令 }
函数调用 函数导出
Shell总结
shell是Linux系统与用户之间的交互界面,用户向 shell提交任务,shell向系统内核转交任务,并管 理相关工作,执行完成后shell取回工作结果,通过 界面返回给用户。shell还提供编程语言,接受用户 关于批处理任务的提交 第一个重要的shell是Stephen Bourneshell于 1979年底提出的Bourne shell,另外两个重要的 shell是Kron shell 和 C shell。Linux支持3种类型 的shell,默认的为Bourne shell的变体版本GNU bash shell支持4种类型的变量(本地变量、环境变量、 参数变量及预定义变量)
history 光标上下移动键 !! !n !string !!:p !$
管道与重定向
标准输入/输出 重定向 管道
标准输入/输出
每个Linux进程都会打开3个文件用来处理程 序的输入输出工作
文件 文件描述符
0
默认设备
键盘
输入文件:标准输入
输出文件:标准输出
错误输出文件:标准错误输出
位置参数变量
由Shell在程序运行时设置 共10个变量,从程序名开始依次为0-9
$0 $1 $2 $3 …
shift命令递归访问参数
预定义变量
变量名
$#
$* $? $$ $!
值意义
传递到脚本的参数的数量
以一个单字符串显示传递到脚本的所有参数内容 命令执行后返回的状态,返回0表示成功执行,其它 值则表明执行错误 当前进程的进程号 后台运行的最后一个进程号
脚本运行
编写脚本程序 改变脚本程序文件的权限为可执行 运行脚本程序
# ./脚本程序 # bash 脚本程序 # . ./脚本程序 # exec 脚本程序
基本脚本编程
变量类型(Shell 变量一节) 条件测试 流程控制 函数
条件测试
使用test命令
语法: test 条件表达式
for循环
语法
for 变量名 in 列表 do
命令
done
流程控制(Cont.)
until循环
语法
until 条件 do 命令 done
流程控制(Cont.)
while循环
语法
while 条件 do
命令
done
流程控制(Cont.)
case语句
语法
case 值 in
模式1) 命令1;; 模式2) 命令2;; 模式3)
> 输出重定向
2> 错误输出重定向
重定向(Cont.)
常用文件重定向命令
重定向命令 意义
command > filename
command >> filename command 1> fielname
把标准输出重定向到一个文件中
把标准输出追加重定向到一个文件中 把标准输出重定向到一个文件中
使用括号[ ]
语法: [ 条件表达式 ]
条件表达式的值为真返回零,为假时返回非 零值
流程控制
if then else语句
语法
if [ 条件语句1 ] then
条件1为真
条件1为假
条件2为真 条件2为假
命令 elif [ 条件语句2 ] then 命令 else 命令 fi
流程控制(Cont.)
管道
| 管道操作符
语法 command1 | command2 示例 [root@pc root]# ls | grep *.txt 管道 ls命令的输出
ls
grep *.txt
Shell脚本
脚本概念 脚本运行 基本脚本编程
脚本概念
无需编译,解释执行 文本文件形式存在 强大的正则表达式操作 运行速度慢 数据类型支持少 用于系统管理和文件操作
Shell 变量
语法
变量名由下划线(_)、字母、数字组成,但变 量名不能以数字开头,大小写敏感 变量值为一个字符串 使用“$”符号获得变量的值 本地变量 环境变量 位置参数变量 预定义变量
来自百度文库
类型
本地变量
设置变量:变量名=变量值 引用变量:$变量名 清除变量:unset 变量名 查看变量:set 变量值置换
$0
当前执行的进程名
Shell 环境配置文件
/etc/profile、/etc/profile.d/* ~/.bash_profile、~/.bashrc、 /etc/bashrc
/etc/profile、/etc/profile.d/*
用户1 ~/.bashrc
LINUX系统
用户2 ~/.bash_profile ~/.bashrc
√ √ √
╳
* r*f* *report*files *report\*files [opq]*report*
╳ ╳
? r?f? ?eportfiles ?eport*? [opq]?report*
√
√ √
╳
命令自动展开
<Tab>键 PATH环境变量 目录路径展开
命令历史与命令重复
变量=${参数变量:-word} 变量=${参数变量:=word} 变量=${参数变量:?word} 变量=${参数变量:+word}
环境变量
设置环境变量: export 变量名=变量值 引用环境变量 :$变量名 常用环境变量
HOME PATH TERM UID PWD PS1
Linux Shell
支持Bourne shell、C shell和Korn shell 标准shell为bash(GNU Bourne-Again Shell)
Bourne shell向下兼容 作业控制(job control) 别名功能(aliases) 命令历史(command history) 命令行编辑功能 自定义功能键 提供更丰富的变量类型、命令与控制结构
Shell脚本编写
目标
1. shell的产生与发展的过程 2. shell环境变量的设置和使用 3. bash的基本操作方式 4. shell的输入输出 5. 简单的shell脚本编辑方法
Shell环境
Shell的产生与发展 Linux Shell Shell 变量 Shell 环境配置文件
Shell总结(Cont.)
shell的通配符包括“*”和“? ”,分别匹配任意多的 字符和一个任意字符。bash提供了命令行自动展开 和历史命令管理操作的功能 shell打开0、1、2号文件描述符文件,并对应为键 盘和屏幕,构成shell的标准输入输出,大多数命令 的输入输出通过标准输入输出进行。shell提供了输 入输出重定向和管道,把标准的输入输出方向改变 为其它的文件或命令 shell提供了数据变量、参数传递、条件测试、流程 控制、数据输入和输出、函数等丰富的程序控制功 能,用户可以通过shell语言编码实现系统管理任务 的批处理和环境设置
command > filename 2 > &1
command 2 > filename command < filename > filename2 command < filename command << delimiter
把标准输出和标准错误输出重定向到一个文件 中
把标准错误输出重定向到一个文件中 以filename为标准输入,filename2为标准输 出 把filename作为命令的标准输入 从标准输入读入数据,直到遇到delimiter为止
用户3 ~/.bash_profile ~/.bashrc
~/.bash_profile
…
bash常用功能
通配符 命令自动展开 命令历史与命令重复
通配符
* 通配符:匹配任意多个任意字符 ?通配符:匹配任意一个字符
判断下列使用了通配符的字符串的能否 匹配“reportfiles”字符串?
1
2
屏幕
屏幕
重定向
< 输入重定向
语法: 示例: 语法: 示例: 语法: 示例:
命令 < 输入文件 [root@pc root]# cat < inputfile 命令 > 输出文件 [root@pc root]# ls > outputfile 命令 2>errorfile [root@pc root]# ls 2 > inputfile