1、正则表达式
1)^开始 *前一个字符重复0次以上
+ 1次以上
? 0次或者1次
. 一个任意字符(.*连用)
{m,n} m到n次
[0-9][a-z] 任意数字或字母
$结束字符
2)sed和awk命令
sed '匹配条件/执行的动作' /etc/passwd sed 's/old/new/g'
awk -F: '{print $1}' /etc/passwd 1表示第一列,2表示第二列 -F:表示分隔符为:
2、变量
1)环境变量 系统环境变量(/etc/profile) 用户环境变量(/home/用户名/.bash_profile)
set查看
2)位置变量 $0-9
$0 脚本名称
$1-9 位置参数
3)预定义变量
$! 后台运行的最后一个进程的PID号
$? 程序退出的代表(0成功)
$* 所有参数的内容
$$ 当前进程的ID号码
$# 当前shell的参数个数
$@ 所有参数内容(逐个读取)
4)自定义变量
name=[value] ps:等号两边不能有空格,变量名对大小敏感
$变量名 取值
3、算术运算
+ - * / %
$((表达式))
$[表达式]
expr expression expr 5 + 2 变量间有空格
4、内置测试判断
Test 测试表达式
[ 测试表达式 ] ps:测试表达式与[]间一定有空格
数值比较
-lt 小于 ex:test &a -lt &b echo $?
-gt 大于
-eq 等于
-ne 不等于
-le 小于等于
-ge 大于等于
字串测试
= 等于
!= 不等于
-z 字串 字串长度伪(为0)则真
-n 字串 字串长度不伪则真
文件测试
-e 文件名 文件存在则真
-r 文件名 文件存在且可读为真
-w 文件名 可写
-x 文件名 可执行
-s 文件名 文件中至少存在一个字符
-d 文件名 文件存在且为目录
-f 文件名 文件存在且为普通文件
!(非)>>-a(与)>>-o(或)
5、命令间的逻辑符合
&& 逻辑与
cmd1 && cmd2 cmd1执行成功才执行cmd2
|| 逻辑或
cmd1 || cmd2 cmd1失败了才执行cmd2
; 无逻辑关系
6、常用命令
date -s "2016-04-12 15:20:13" 修改系统时间
date '+Y%m%d' 按照年月日格式输出系统时间
date -d '7 day ago' '+Y%m%d' 输出7天前的时间
7、取字符串
${变量名:offset:length} echo ${a%.*}
8、书写规范
#!/bin/bash 声明运行环境
运行方式 a.赋予权限直接运行
b.通过运行环境运行 bash 1.sh sh 1.sh
c. . 1.sh source 1.sh
9、控制语句
1)for语句
a. for 变量 in 值1 值2...值N 变量依次取值1...值N
do
命令集合 {1..50} `seq 50` 取值1到50
done
b. for((初始化变量;结束循环条件;变量运算))
2)while循环
a. while [ 条件 ] let i=i+1---i=$[i+1] i自增1
b. while read -r line
do
echo $line
done < /etc/passwd 从路径中逐行读取并赋值给line
3)if语句
if 条件
then
命令序列
elif 条件
then
命令序列
else
命令序列
fi
4)case语句
a. case $变量名称 in
条件1)
命令序列
;;
条件2)
命令序列
;;
*) 以上都不满足
esac
10、函数
a. name(){
命令序列
}
b. function name{
命令序列
}
11、计划任务
1)一次性计划任务
at 时间 ctrl+d结束输入
at -l 列出当前计划任务
2)周期性计划任务 service crond start(status,restart)
a.开机自启动
chkconfig --list 列出系统服务是否开机自启动(3和5)
b.制定计划任务内容
crontab -e(ENTER) >> 进入vi命令
时间和命令 分 时 日 月 周(没有用*代替 -表示连续时间 ,表示若干不连续时间 /表示间隔时间) cmd命令 */10 * * * * ntpdate 时间服务器IP 每10分钟同步一次时钟
c.重启服务 service crond restart