




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SHELL编程讲师 张浒滨 shell脚本能提高用户操作和管理员进行系统管理的效率 一般步骤编辑器编写脚本程序shell做解释程序 非交互地执行脚本 两种执行方式 用sh命令执行脚本文件给脚本文件添加执行权限 用 命令执行 2 Shell的功能 3 4 5 HELLOWORLD vihello sh按i进入插入模式输入echo helloworld 输入wq保存退出shhello sh或者chmod755hello sh hello sh 6 一 VI编辑器 VI的两种工作模式VI的启动VI的退出VI的文本编辑VI命令模式下的操作 7 系统配置文件 shell脚本文件等都是文本文件 编辑它们都要使用文本编辑器 在Linux系统中有多种文本编辑器 其中既有字符界面如的VI EMACAS等 也有图形界面的如 附件 菜单下的 文本编辑器 gedit 等 用户可以根据自己的喜好选择使用 学习vi的方法 vi的命令太多且难以记忆 而实际上真正经常使用的命令并不是太多 只要掌握几个关键的并加以适当练习很快就上手使用vi 8 为什么选择VI 就使用的方便性而言 有比vi更好的编辑器 还要图形化的gedit 为什么还要用vi 历史久远 功能强大 在有些情况下系统中能够找到的编辑器只有vi 用户一旦熟悉后 使用可以极大地提高工作效率 而学习vi也是掌握正则表达式的有效途径 非常方便 系统管理员使用正则表达式由于vi的版本不同 其命令格式 功能和用法会有一些差别 Shell中执行vi命令 RedHat系统实际上是执行vim 它是传统vi的增强版本 9 1 VI的两种工作模式 命令模式启动VI默认进入命令模式 此时界面不能编辑 只能接受命令 键入的命令看不到 文件的保存 退出 文本的删除 复制 搜索等操作输入模式编辑模式命令模式下用i nsert a ppend o s等均可进入该模式 按esc返回命令模式 10 2 VI的启动 启动命令 vimy txt如果文件存在 则vi显示文件内容并等待用户的命令 如果指定的文件不存在 则vi将告知用户这是未命名的文件 并进入一个空白的界面 启动vi时都是默认处于命令模式 用户必须使用命令切换到文本输入模式才能进行输入编辑 或者可执行删除 复制等编辑命令 3 VI的退出 冒号进命令模式下 q 不存档强制退出 w保存但不退出 w rite 后可加所要存档的文档名 wq存档后退出 12 二 SHELL变量与语法 Shell概述shell变量和符号shell控制流程语法shell中的输出重定向脚本实例 13 一 Shell概述 1 shell的基本元素 1 bin bash必须的 指出shell的类型 2 注释 3 变量 4 控制 14 2 一般步骤 1 编辑文件 2 保存文件 3 将文件赋予可执行的权限 4 运行及排错 15 16 注意 一般以 sh为文件后缀 常见的两种执行方式 文件名在当前目录下写明路径执行 要求文件必须有执行权限 如chmod755run sh run shsh文件名shrun sh文件开头指定一个或多个解释脚本程序的shell 如 bin bash如果指定 注意 bin不要漏了 否则用 方式执行会找不到路径 不指定的话一般默认以 bin sh执行shell脚本 17 18 3 Shell的一般结构shell类型函数主过程一般模板abc sh bin bashshell类型 asimpleshellscriptexample afunctionfuncitonsayhello 函数 echo EnterYourname readname读取来自键盘输入的变量echo Hello name echo programmestartshere 主过程sayhelloecho programmeends 二 Shell中的特殊符号 1 注释符 除了 bin bash里的 特殊2 美元符 变量符 与反斜杠转义符相反 使其后的普通字符作为变量名 如 a表示变量a的值 变量过长时 建议用 括起来3 单引号被引起的字符全部做普通字符 即全部原样echo my SHELL 19 4 双引号引号内的内容 除 转义符 倒引号 这三个保留特殊功能 其他字符均做普通字符 5 倒引号 数字1键旁边的那个键 英文输入法 引号内的字符串当做shell命令行解释执行 得到的结果取代整个倒引号括起来的部分 例 linux n3so echo 我当前的目录是 pwd 我的登录姓名是 LOGNAME 执行结果为 我当前的目录是 home zhangyu861022 我的登录姓名是zhangyu861022 20 练习一下 区别下面几句 echo myhomeis HOME echo myhomeis HOME echo myhomeis HOME echo myhomeis pwd echo myhomeis pwd 用于括起来shell命令 用于原样显示 6 反斜线反斜线是转义字符 它能把特殊字符变成普通字符 在某个字符前面利用反斜杠 能够阻止shell把后面的字符解释为特殊字符 注意 在单引号括起来的字符串中 反斜线也成为普通字符 而失去转义字符功能 22 三 变量 shell变量可以保存如路径名 文件名或者一个数字本地变量局部变量只在创建它们的Shell中使用 可以在shell程序内任意使用和修改它们 环境变量可以在创建它们的Shell及其派生出来的任意子程序中使用 有些变量是用户创建的 其他的则是专用的 比如PATH HOME 是系统环境的一部分 不必去定义它们 可以在shell程序中使用它们 还能在shell中加以修改 内部变量由系统提供的 与环境变量不同 但用户不能修改它们 23 24 本地变量和环境变量的对比 zhangyu861022 linux n3so env sort lesszhangyu861022 linux n3so name zhbbash name commandnotfoundzhangyu861022 linux n3so bashzhangyu861022 linux n3so name zhbzhangyu861022 linux n3so echo namezhbzhangyu861022 linux n3so 123 sspbash 123 ssp commandnotfoundzhangyu861022 linux n3so 1 本地变量 局部变量 用户变量 25 本地变量在用户现在的shell生命期的脚本中使用变量名 值注意 1 等号两边不可以有空格 2 取值包含空格 必须用双引号括起来 3 Shell变量可以用大小写字母 区分大小写 变量的声明和使用 1 变量是弱类型的 不用声明类型 2 变量声明及赋值格式变量 值 等号两边不能有空格 3 变量的引用 变量名 变量名 变量名为1个字符时建议使用方式一 多余一个字符时建议使用方式二举例 a abc 26 显示变量echo命令可以显示单个变量取值 变量名前加 27 echo Nameecho nameecho nameareecho name are 输出引用变量时加 比较好 清除变量 unset变量名举例 echo name unsetname 注意 name前没有 显示本地所有变量set 28 设置只读变量设置变量时 不想再改变其值 可以将之设为只读变量变量名 值 2 环境变量 29 环境变量用于所有用户进程 通常称为子进程 登陆进程称为父进程 通过pstree可以查看环境变量可以用于所有子程序 包括编辑器 脚本和应用举例 via sh bin bash 检测环境变量echo 家目录是 HOME 环境变量可以在命令行中设置 但用户注销时这些值将丢失 环境变量均为大写 必须用export命令导出 设置环境变量变量名 变量值export变量名 注 环境变量名大写 显示环境变量env可以看到所有的环境变量echo 环境变量名 显示一个变量 清除环境变量unset环境变量名 30 31 HOME 代表使用者的家目录 cd 去到使用者的家目录或者利用cd就可以直接回到使用者家目录了 SHELL 目前这个环境使用的SHELL是哪个程序 如果是bash的话 预设是 bin bashPWD 用户当前工作目录的路径 它指出用户目前在Linux文件系统中处在什么位置 它是由Linux自动设置的HISTSIZE 这个与 历史命令 有关 曾经下达过的指令可以被系统记录下来 而记录的 数目 则是由这个值来设定的 ENV 这个使用者所使用的个性化环境设置文件的读取文件 MAIL 当我们使用mail这个指令在收信时 系统会去读取的邮件信箱文件 mailbox PATH 就是执行文件搜寻的路径 目录与目录中间以冒号 分隔 由于文件的搜寻是依序由PATH的变量内的目录来查询 所以 目录的顺序也是重要的喔 PATH示例 举例 配置java环境变量可使任何目录都能执行javac命令 1 需要配置Java环境变量JAVA HOME JDK存放的路径 CLASSPATH 字节码的位置 让JVM知道要运行的类的字节码放在哪 PATH 让OS找到javac等命令的存放的位置 2 在Linux下配置它们打开终端vi etc profile在配置文件中追加内容JAVA HOME JDK存放位置CLASSPATH 当前目录 PATH JAVA HOME BIN PATH 不覆盖原来的内容 追加 exportJAVA HOMECLASSPATHPATH保存 让配置起作用 source bash profile或者注销 32 Shell运算符 33 34 35 3 控制流程 shell运算符和C语言基本类似 也有分支 循环流程控制 简单举例后面例子涉及的命令seq命令 产生1 9的数字序列比如seq19expr命令 对表达式求值 直接求值命令 对被括起来的表达式求值 36 37 表达式求值 expr1 3 expr2 1 expr1 3使用 要加转义符 echo expr1 3 注意 表达式中 数字和运算符之间要有空格 出现在语句中要加倒引号 38 条件判断 39 Test d 判断是否是目录文件Test e 判断文件是否存在Test表达式1 a表达式2 两个表达式都为真Test表达式1 o表达式2 有一个表达式为真Test n字符串 判断字符串的长度是否为非0Test z字符串 判断字符串的长度是否为0Test字符串1 字符串2 判断字符串1与字符串2是否相等Test字符串1 字符串2 判断字符串1与字符串2是否不等 40 条件判断 41 流程控制语句if语句 42 1 分支结构 if分支if eq0 thenecho 输入了0个参数 elif lt1 thenecho 输入了多个参数 elseecho 输入了1个参数 fi casecase in0 echo 输入了0个参数 1 echo 输入了1个参数 echo 输入了多个参数 esac每个分支条件后必须以两个分号结尾 43 44 流程控制for循环 45 for循环事例 for例子编写一段shell脚本程序用于输出100以内所有10的倍数 46 47 read变量1 变量2 可以从键盘上读取多个变量的值 用户输入数据时 以空格或者Tab键作为分隔 如果输入的数据个数不够 则从左到右对应赋值 没有输入的变量为空 如果输入的数据个数超了 则从左到右对应赋值 最后一个变量被赋予剩余的所有数据 例如 创建一个文本文件zhb 输入以下shell脚本 48 例 编写一段shell脚本程序用于接收从键盘输入的任意两个整数之间各数的10倍数 49 50 51 练习1 从键盘输入两个参数 程序用于判断这两个参数是否相等 如果想等打印 这两个数相等 如果不想等打印 这两个数不相等 52 53 五命令结果重定向 1stdout标准输出2stderr标准错误输出重定向到文件file 终端上只能看到标准输出 命令 file错误重定向到文件file 终端上只能看到标准错误 命令2 file标准输出和标准错误都重定向到file 终端上看不到任何信息 命令 file2 1 等于 命令1 file2 1 54 1 command file2 file2 command file2 1有什么区别 1 的写法 stdout和stderr都直接送到file中 会出现两个同抢占file的管道 file会被打开两次 stdout和stderr输出的信息会互相覆盖 2 的写法将stdout直接送向file stderr继承1的管道后 再被送往file 此时 file只被打开了一次 也只使用了一个管道FD1 它包括了stdout和stderr的内容 从IO效率上 前一条命令的效率要比后面一条的命令效率要低 所以在编写shell脚本的时候 常用command file2 1这样的写法 55 還可以 命令2 file 2命令 dev null 有趣的IORedirection catfile文件內容会被洗掉 catfile此处会没有内容stdout stderr的管道先准备好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点解析-人教版八年级物理上册第4章光现象-光的色散单元测试练习题(详解)
- 2025年注册环保工程师考试(大气污染防治专业案例)全真模拟题库及答案(娄底)
- 解析卷人教版八年级物理上册第4章光现象-光的折射定向训练试卷(解析版含答案)
- 综合解析人教版八年级上册物理《物态变化》章节测试试题(解析卷)
- 难点详解人教版八年级物理上册第4章光现象定向练习试题(含答案解析)
- 2025数控车编程试题及答案
- 2025年临沂注册环保工程师考试(大气污染防治专业案例)全真模拟题库及答案
- 2025煤矿企业主要负责人考试安全生产知识和管理能力考前模拟试题及答案
- 2025年房地产法学考试及答案
- 2025煤矿企业主要负责人考试安全生产知识和管理能力练习题及答案
- 2024制冷系统管路结构设计指导书
- NB∕SH∕T 0941-2016 精密铸造专用蜡
- 临床研究中的统计学方法和应用
- 四年级 我是小小讲解员 公开课比赛一等奖
- 《疯狂动物城》全本台词中英文对照
- 工程材料及成形工艺基础-铸造成形
- 全北师大高一英语必修一单词表
- 平衡计分卡 课件
- 樊登读书会市级分会运营手册OK
- 车辆装卸运输规定(2篇)
- 正大杯全国大学生市场调查与分析大赛(试题340道含答案)
评论
0/150
提交评论