linux下的shell项目知识累积.doc

上传人:m**** 文档编号:557993415 上传时间:2022-10-19 格式:DOC 页数:14 大小:210.50KB
返回 下载 相关 举报
linux下的shell项目知识累积.doc_第1页
第1页 / 共14页
linux下的shell项目知识累积.doc_第2页
第2页 / 共14页
linux下的shell项目知识累积.doc_第3页
第3页 / 共14页
linux下的shell项目知识累积.doc_第4页
第4页 / 共14页
linux下的shell项目知识累积.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《linux下的shell项目知识累积.doc》由会员分享,可在线阅读,更多相关《linux下的shell项目知识累积.doc(14页珍藏版)》请在金锄头文库上搜索。

1、如何进行shell脚本开发什么是shell简单的理解为系统管理员与操作系统之间的接口;顾明思义它是操作系统的外壳,管理员通过这个接口完成所需要的任务.shell脚本与shell命令的区别及关系shell脚本是一个包含shell命令的ASCII码文件,特点是可以用文本处理工具查看如more 脚本名 来讯速的判断它是不是脚本.如果是命令的话则显示乱码而命令则是可执行的二进制代码文件Shell脚本可理解为shell命令与应用程序的集合shell脚本用起来有时候跟shell命令一样.unix的文件观在unix中设备是文件,目录是文件,文件是文件:空设备文件/dev/null开发脚本时需要把不必要的信息

2、输出到这个文件,让屏幕干净. cat /dev/null filename #清空filename statement /dev/null #把不需要的输出重定向到空如何创建一个可执行的脚本1 用touch命令建一个空文件(touch shellscrip),更改其权限为可执行chmod +x shellscrip2 如何让操作系统懂得它是一个脚本 echo #!/bin/sh shellscrip echo echo hello world shellscrip3 执行shellscrip 完成一个hello world脚本hello world 相关的几个命令touch 是创建文件的命令c

3、hmod 是改变文件的权限(文件的权限位分为读写执行分别用三个字母标识共有三组用户属性第一组文件属主,第二组为同组用户,第三组为其它,注意:同组不包含属主echo 表示显示信息 输出重定向 追加 转义字符shellscripr 的内容#!/bin/bsh操作系统看到 #! 就会用紧跟在它后面的程序去解释这个的文本(它可能是脚本,可能是一个awk程序或是其它别的应用程序),这里用bsh ,则说明它是bsh的脚本,不同的shell也在这里指出,重要的是这里必需给出绝对路径(即全路径或完整路径),哪怕PATH变量有指出也要给绝对路径. 仅第一次出现是这个含义,往后再现”#!”字符串shell解释为注

4、释行(注释行以#号开始)并不会改变当前的shell.:#!/bin/sh #!/bin/cshecho $status echo $status#!/bin/csh #!/bin/shecho $status echo $status以上两组动作将有不同的结果表明第二次出现的 #! 指定的shell并不会改变当的shell常见的Shellbsh (Bourne Shell)ksh (Korn Shell)csh ( C Shell)最常用的Shell是sh,大部分的Unix系统都将sh连接到bsh;IBM将sh连接到kshShell程序也就是一系列的Unix命令的组合,相当于DOS系统下的批处

5、理命令。Unix命令既可以是内部命令,也可以是已经编译好的高级语言程序,甚至可以是其它Shell程序Shell程序支持分支与循环结构,可以进行信号处理Shell程序可以加注释,注释以“#”号开头,到行尾结束怎样才能知道用什么Shell来执行我编写的Shell脚本?参照下面三个原则:如果脚本文件的第一个字符不是“#”号,则启动bsh执行此脚本如果脚本文件的第一个字符是“#”号,但第二个字符不是“!”,则启动csh执行此脚本如果脚本文件的前两个字符为“#!”,则后面必须是Shell的全路径,启动指定的Shell执行此脚本,如:#!/usr/bin/ksh求条件表达试的值 test 或 不支持控制符

6、的判断.规避方法 X$str = Xstring 如果是含路径的字符串用basename,与dirname命令取得文件名与父目录名,因为对含路径的字符串进行处理时test命令是会报错的test 表达式 或 表达式 name=Tom #bsh(这种赋值方式不适合csh,tcsh)test $name = Tom #等号两边必需留空格字符串比较echo $? #查看测试结果 $name = Tom #方括号两边内侧须留空格字符串,整型和文件的测试字符串测试string1 = string2 #字符串1等于字符串2 (等号两边的空格是必需的)string1 != string2 #字符串1不等于字符

7、串2 (不等号两边的空格是必需的)string#不是空串-z string #字符串长度为零-n string #字符串长度不为零整型测试 int1 eq int2 # Int1等于 int2 int1 ne int2 # Int1 不等于 to int2 int1 gt int2 # Int1 大于 int2 int1 ge int2 # Int1 大于等于 int2 int1 lt int2 # Int1 小于 int2 int1 le int2 # Int1 小于等于int2逻辑测试expr1 -a expr2 逻辑与expr1 -o expr2 逻辑或! expr 逻辑非文件测试-b

8、filename 是块文件-c filename 字符文件-d filename 目录文件-f filename 普通文件但非目录文件-g filename 设置gid的文件-k filename 存在粘性位的文件-p filename 命名管道文件-r filename 有读权限的文件-s filename 文件大小非零字节-u filename 设置uid的文件-w filename 有写权限的文件-x filename 有执行权限的文件 Shell中的if语句的语法如下(这里不包含csh,tchs):if 命令1 #如果命令1执行成功(返回0)then#则执行list1命令列表 list

9、1#如果执行不成功(返回非0值)elif 命令2 #执行命令2then#如果命令2执行成功 list2#则执行list2命令列表else#如果命令2执行不成功 list3#则执行list3命令列表fiif语句以fi结尾Shell中case语句的语法如下:case word in #如果word与 pattern1匹配, pattern1)#则执行list1命令列表 list1 #如果word与 pattern2匹配, ;#则执行list2命令列表 pattern2)# list2 ; esaccase语句以esac结尾,每个分支后两个“;”是必须的case语句中的pattern可以使用如下结构

10、“或”结构,如“a|b|c”匹配a或b或c范围,如“0-9”匹配单个数字“?”匹配任何单个字符“*”匹配任何零个或多个字符使用“*”,相当于C语言default分支以上结构可以组合使用,如:“0-9|0x0-9A-Fa-f”Shell中while循环的语法如下:while commanddo listdone#循环语句必须以done结尾1、执行命令command2、如果执行成功(返回值为0), 则执行list命令列表3、重复1,直至command命令失败(返回非零值)Shell中until循环的语法如下:until commanddo listdone#循环语句必须以done结尾1、执行命令c

11、ommand2、如果执行失败(返回值非0), 则执行list命令列表3、重复1,直至command命令执行成功(返回0)Shell中for循环的语法如下:for name in word1 word2 . wordNdo listdone#循环语句必须以done结尾name为变量名,word1到wordN是由空格分开的单词列表for循环每次执行时,变量name被设为列表中的下一单词for循环常用于处理文件集合例如:修改一个目录下所有文件的文件名,在文件名后加上“.bak”for file in $HOME/*do mv $file $file.bakdoneksh中Select语句的语法如下:

12、select name in word1 word2 . wordNdo listdone#循环语句必须以done结尾name为变量名,word1到wordN是由空格分开的单词列表1、select语句打印word1wordN到标准出错设置(文件描述符为2),前面增加一个数字。2、打印PS3提示符,并且从标准输入设备读一行3、如果该行与所列word前面的数字一致,则变量name被设置成相应的word4、如果该行为空,则重新打印select列表5、否则,变量name被设置成空6、读到的内容存放在变量REPLY中7、每输入一次选择,命令列表list被执行一次,直到遇到break或EOF8、如果在命令

13、列表list中将变量REPLY设成空,则在打印PS3提示符前,打印select列表Select语句应用示例:select SEL in Menu1 Menu2 Exitdo case $SEL in Menu1) echo You Select Menu1. REPLY= ; Menu2) echo You Select Menu1. REPLY= ; Exit) break ; *) echo Select Error. REPLY= ; esacdoneShell中的特殊字符* ? $ ; & ( ) | 换行 空格 tab单引号“”:单引号内的所有特殊字符都失去其特殊含义,包括换行符“”必须成对出现。一对“”之间不能嵌入“”,前面用“”转义也不可以反引号“”:反引号内是一组命令。Shell将反引号替换为该命令的输出。反引号对特殊字符的处理与双引号基本相同双引号“”:双引号内的大部分字符失去特殊含义,下面的字符除外:$ $用于变量替换 反引号用于命令替

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号