===============================================================================
Shell程序由OS执行用户从键盘输入的命令。首先理解一个概念, Shell脚本,那什么是Shell脚本?,其实
Shell脚本是用shell语言写的程序,shell语言语法简单,关键字少,是一种解释型语言,程序由Shell解释
器解析执行。在终端输入 echo $SHELL 查看本机所用的Shell是哪种类型。
Shell类型 | 开发人员 | 开发机构 | 备注 |
sh (Bourne shell) | Steven Bourne(斯蒂夫-波恩) | AT&T Bell实验室 1978 | Unix 默认Shell, 是其他各种Shell开发基础, Bourne Shell 编程方面优秀,在处 理与用户的交互方面不够友好 |
bash(Bourne Again Shell) | Brian Fox(布莱恩-福克斯) | 自由软件基金会(FSF) /bin/bash 1989 | Linux 默认Shell |
csh(C Shell) | Bill Joy | Berkeley (BSDSystem) /bin/sh | 具有与C编程语言类似的Shell语法 |
ksh(Korn Shell) | David Korn | AT&T Bell lab | |
tcsh | Ken Greer | /bin/tch | 普通C Shell, 以用户为中心, 速度快,与 Berkeley Unix C Shell 兼容 |
==================================================================================
编写Shell脚本的目的:(1)Linux系统监控 (2)数据备份和创建快照(3)针对MySQL等数据库备份的转储工作
(4)查询网络服务是否正常 (5)搜索耗费系统资源的进程.....
首先你应该对Linux基本命令了解, pwd, cd, ls, less, more, cat, file, chmod, chown, chgrp,pipe, sort, uniq,
grep, pr, head, tail, sed, awk
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Shell脚本构成要素(1)if~else, for, while, loop指令(2)grep, awk等文本处理工具(3)Shell命令和可执行文件
特殊参数变量 | 定义 |
$# | 表示十进制数的位置参数的总数 |
$$ | 表示当前shell的进程的PID |
$@ | 表示从1开始的位置参数的扩展,具有总参数值 |
$0 | 表示分配已执行的脚本名 |
$1....${10} | 表示分别浏览位置的参数 |
$_ | 表示表示执行参数目录的Shell脚本的绝对路径 |
$? | 表示最后执行的前台管道的终止状态 |
运算符 | 备注 |
= | 字符串等于符号 |
!= | 字符串不等于符号 |
-eg | 数字等于符号 |
-ne | 数字不等于符号 |
-a | 逻辑与 and |
-o | 逻辑或 or |
! | 逻辑非 not |
-gt | 大于 |
-ge -lt -le | 大于等于 小于 小于等于 |
参数 | 说明 | 参数 | 说明 |
-b filename | 若filename存在且为块设备则为真 | -r filename -w filename -x filename | 若filename存在且可读则为真 若filename存在且可写 则为真 若filename存在且可执行则为真 |
-c filename | 若filename存在且为字符设备则为真 | filename1 -nt flename2 | 若filename1的修改日期比filename2晚则为真 |
-d filename | 若filename存在且为目录则为真 | filename1 -ot filename2 | 若filename1的修改日期比filename2早则为真 |
-f filename | 若filename存在且为普通文件则为真 | ilename1 -ef filename2 | 若filename1和filename2具有相同设备,索引节点编号则为真 |
-L filename | 若filename存在且为链接文件则为真 | -z str | 若str长度为0则为真 |
-p filename | 若filename存在且为管道文件则为真 | -n str | 若str长度不为0则为真 |
-S filename | 若filename存在且为套接字则为真 | str1 = str2 | str1等于str2则为真 |
-s filename | 若filename存在且大于0则为真 | str1 != str2 | str1不等于str2则为真 |
! 表达式 | 表达式为假则为真 |
======================================Shell语法========================================
==============================================End======================================