资源描述:
《linux下的shell项目知识累积》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、如何进行shell脚本开发什么是shell简单的理解为系统管理员与操作系统之间的接口;顾明思义它是操作系统的外壳,管理员通过这个接口完成所需要的任务.shell脚本与shell命令的区别及关系shell脚本是一个包含shell命令的ASCII码文件,特点是可以用文本处理工具查看如more脚本名来讯速的判断它是不是脚本.如果是命令的话则显示乱码而命令则是可执行的二进制代码文件Shell脚本可理解为shell命令与应用程序的集合shell脚本用起来有时候跟shell命令一样.unix的文件观在unix中设备是文
2、件,目录是文件,文件是文件:空设备文件/dev/null开发脚本时需要把不必要的信息输出到这个文件,让屏幕干净.cat/dev/nullfilename#清空filenamestatement>/dev/null#把不需要的输出重定向到空如何创建一个可执行的脚本1用touch命令建一个空文件(touchshellscrip),更改其权限为可执行chmod+xshellscrip2如何让操作系统懂得它是一个脚本echo#!/bin/sh>shellscripechoechohelloworld>>shel
3、lscrip3执行shellscrip完成一个helloworld脚本helloworld相关的几个命令touch是创建文件的命令chmod是改变文件的权限(文件的权限位分为读写执行分别用三个字母标识共有三组用户属性第一组文件属主,第二组为同组用户,第三组为其它,注意:同组不包含属主echo表示显示信息>输出重定向>>追加转义字符shellscripr的内容#!/bin/bsh操作系统看到#!就会用紧跟在它后面的程序去解释这个的文本(它可能是脚本,可能是一个awk程序或是其它别的应用程序),这里用bsh,
4、则说明它是bsh的脚本,不同的shell也在这里指出,重要的是这里必需给出绝对路径(即全路径或完整路径),哪怕PATH变量有指出也要给绝对路径.仅第一次出现是这个含义,往后再现”#!”字符串shell解释为注释行(注释行以#号开始)并不会改变当前的shell.:#!/bin/sh#!/bin/cshecho$statusecho$status#!/bin/csh#!/bin/shecho$statusecho$status以上两组动作将有不同的结果表明第二次出现的#!指定的shell并不会改变当的shell
5、常见的Shellbsh(BourneShell)ksh(KornShell)csh(CShell)最常用的Shell是sh,大部分的Unix系统都将sh连接到bsh;IBM将sh连接到kshShell程序也就是一系列的Unix命令的组合,相当于DOS系统下的批处理命令。Unix命令既可以是内部命令,也可以是已经编译好的高级语言程序,甚至可以是其它Shell程序Shell程序支持分支与循环结构,可以进行信号处理Shell程序可以加注释,注释以“#”号开头,到行尾结束怎样才能知道用什么Shell来执行我编写的S
6、hell脚本?参照下面三个原则:如果脚本文件的第一个字符不是“#”号,则启动bsh执行此脚本如果脚本文件的第一个字符是“#”号,但第二个字符不是“!”,则启动csh执行此脚本如果脚本文件的前两个字符为“#!”,则后面必须是Shell的全路径,启动指定的Shell执行此脚本,如:#!/usr/bin/ksh求条件表达试的值test或[]不支持控制符的判断.规避方法[X$str=Xstring]如果是含路径的字符串用basename,与dirname命令取得文件名与父目录名,因为对含路径的字符串进行处理时tes
7、t命令是会报错的test表达式或[表达式]name=Tom#bsh(这种赋值方式不适合csh,tcsh)test$name=Tom#等号两边必需留空格字符串比较echo$?#查看测试结果[$name=Tom]#方括号两边内侧须留空格字符串,整型和文件的测试字符串测试string1=string2#字符串1等于字符串2(等号两边的空格是必需的)string1!=string2#字符串1不等于字符串2(不等号两边的空格是必需的)string#不是空串-zstring#字符串长度为零-nstring#字符串长度不
8、为零整型测试int1–eqint2#Int1等于int2int1–neint2#Int1不等于toint2int1–gtint2#Int1大于int2int1–geint2#Int1大于等于int2int1–ltint2#Int1小于int2int1–leint2#Int1小于等于int2逻辑测试expr1-aexpr2逻辑与expr1-oexpr2逻辑或!expr逻辑非文件测试-bfilename是块文件-cf