《shell脚本笔记》由会员分享,可在线阅读,更多相关《shell脚本笔记(6页珍藏版)》请在金锄头文库上搜索。
1、Shell 脚本脚本的应用的应用 一一 SHELL 的种类的种类 图形的图形的 SHELL:EXPLORER.EXE (Windows) GNOME KDE (Linux) 命令的命令的 SHELL:cmd.exe powershell.exe (Windows) bash nologin (Linux) 二二 查看查看 SHELL 1、查看系统所支持的、查看系统所支持的 SHELL: cat /etc/shells 2、查看当前默认支持的、查看当前默认支持的 SHELL: echo $SHELL 3、切换、切换 SHELL: 直接输入直接输入 SHELL 解释器的名称,退出时解释器的名称,退
2、出时 EXIT返回原返回原SHELL 三三 编写脚本编写脚本 1、脚本的结构:脚本声明、注释信息、执行的命令、脚本的结构:脚本声明、注释信息、执行的命令 2、执行脚本、执行脚本: a、需要执行权限,方法:、需要执行权限,方法:./脚本名脚本名 b、不需要执行权限,方法:、不需要执行权限,方法: SHELL 解释器解释器 /脚本名脚本名 c、不需要执行权限,方法:、不需要执行权限,方法: source 或或. /脚本名脚本名 四四 重定向重定向 1、种类:标准输入(、种类:标准输入(0) 、标准输出() 、标准输出(1) 、标准错误输出() 、标准错误输出(2) 2、重定向的符号:、重定向的符号
3、: 重定向重定向 追加重定向追加重定向 3、应用:、应用: 11.txt 表示将标准输出的内容输出到表示将标准输出的内容输出到 1.txt 中中 22.txt 表示将标准错误输出的内容表示将标准错误输出的内容 输出到输出到 2.txt 中中 &3.txt 表示将标准输出和标准错误输出都输出到表示将标准输出和标准错误输出都输出到 3.txt 中中 echo | passwd -stdin zhangsan 通 过 脚 本 给通 过 脚 本 给zhangsan 添加密码添加密码 五五 变量变量 1、种类:、种类: 自定义变量、环境变量、位置变量、预定义变量自定义变量、环境变量、位置变量、预定义
4、变量 2、应用:、应用: a、自定义变量:、自定义变量: 给变量赋值方法给变量赋值方法:1: 变量名变量名=变量值变量值 引用变量:引用变量: echo $变量名变量名 注意事项:注意事项:用来区别变量名和普通的字符串用来区别变量名和普通的字符串 给变量赋值方法给变量赋值方法 2: read -p 提示信息提示信息: 变量名变量名 (优势:(优势:变量的值由用户自己指定,灵活)变量的值由用户自己指定,灵活) 引号的应用:引号的应用: 共同点:可以在变量值中出现空格。共同点:可以在变量值中出现空格。 不同点:双引号:内容可引用其他变量不同点:双引号:内容可引用其他变量 单引号:内容不可引用其他变
5、量单引号:内容不可引用其他变量 反撇号:将内容当做命令处理反撇号:将内容当做命令处理 全局变量:让变量在当前系统中所有全局变量:让变量在当前系统中所有 SHELL 下都能够生效。下都能够生效。 export 变量名变量名=变量值变量值 或者或者 export 变量名变量名(不带不带$符号符号) 整数变量:整数变量: expr 变量一变量一 运算符号运算符号 变量二变量二 运算符号:运算符号:+ - * / % 环境变量:环境变量: 配置文件:配置文件:/etc/profile 全局配置文件全局配置文件 /bash_profile 用户配置文件用户配置文件 位置变量:位置变量: $0-$9 0
6、代表命令或程序代表命令或程序 1-9 代表位置参数代表位置参数 预定义变量:预定义变量: $# 位置参数的个数位置参数的个数 $* 显示全部位置参数显示全部位置参数 $? 查看上一条命令是否执行成功查看上一条命令是否执行成功 3、计划任务:、计划任务: crontab -e 格式:格式: 分分 时时 日日 月月 周周 执行的命令执行的命令(完整路径完整路径) 时间格式:有规律的时间间隔:时间格式:有规律的时间间隔:*/3 无规律的时间间隔:无规律的时间间隔:1,3,5 连续的时间间隔:连续的时间间隔:1-5 设置完成后,检查服务是否开启设置完成后,检查服务是否开启 service crond
7、restart chkconfig crond on if 循环语句循环语句 条件测试:条件测试: 命令:命令:test 格式:格式:test 条件条件 条件条件 两端皆有空格两端皆有空格 测试:测试:echo $? 返回返回 0,代表上一条命令执行成功;返回非,代表上一条命令执行成功;返回非 0,代表上一条命,代表上一条命令执行不成功。令执行不成功。 实验实验 1:测试家目录下是否存在:测试家目录下是否存在 1.txt 的文件的文件 实验实验 2:创建一个文件,文件名由用户定义,然后检测其是否有执行:创建一个文件,文件名由用户定义,然后检测其是否有执行权限,有则输出权限,有则输出 YES,没
8、有输出,没有输出 NO 文件测试:文件测试: -f 是否为文件是否为文件 -d 是否为目录是否为目录 -e 目录或文件是否存在目录或文件是否存在 -r/w/x 是否是否有读有读/写写/执行权限执行权限 整数测试:整数测试: -eq 等于等于 -ne 不等于不等于 -gt 大于大于 -ge 大于等于大于等于 -lt 小于小于 -le 小于等于小于等于 字符串测试:字符串测试: = 等于等于 != 不等于不等于 -z 空空 逻辑测试:逻辑测试: -a 而且而且 相当于相当于& “与”“与” -o 否则否则 相当于相当于| “或”“或” ! 代表反向选取, “否”代表反向选取, “否” if 的语法
9、结构的语法结构 单分支:单分支:if 条件测试条件测试 then 命令序列命令序列 fi 双分支:双分支:if 条件测试条件测试 then 命令序列(条件测试成功)命令序列(条件测试成功) else 命令序命令序列(条件测试不成功)列(条件测试不成功) fi 多分支:多分支:if 条件测试条件测试 1 then 命令序列(条件测试成功)命令序列(条件测试成功) elif 条件测条件测试试 2 then 命令序列(条件测试成功)命令序列(条件测试成功)else 命令序列(条件测试不成命令序列(条件测试不成功)功) fi For while case 循环循环 For 制定一个变量以及可能的取值列
10、表,针对每一个不同的取值制定一个变量以及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列重复执行相同的命令序列,直到变量值用完退出,直到变量值用完退出 For 变量名变量名 in 取值列表取值列表 Do 命令序列命令序列 Done find 用法:用法: find -name 查找文件名查找文件名 -size 查找文件大小查找文件大小 -type 查找文件类型查找文件类型 -user 查找文件属主查找文件属主 -exec 命令命令 ; 对对 find 的查找结果进行筛选的查找结果进行筛选 while For 循环语句适用于列表对象无规律,且列表来源已固定的循环语句适用于列表对象无规律
11、,且列表来源已固定的场合场合; 而对于按特定条件重复执行的操作,更适合使用而对于按特定条件重复执行的操作,更适合使用 while while 条件测试条件测试 do 命令序列命令序列 done 条件测试操作:条件测试操作:true false 使用使用 true 作为条件时,循环将会无限执行下去,除非强制终作为条件时,循环将会无限执行下去,除非强制终止脚本(止脚本(exit) 使用使用 false 作为条件时,循环将不会执行作为条件时,循环将不会执行 case 每行模式(或条件)都以)结尾每行模式(或条件)都以)结尾 每个命令区域结束都以一对; ;结尾每个命令区域结束都以一对; ;结尾 默认搜索条件为默认搜索条件为*) 最后以最后以 esac 结尾结尾