欢迎来到天天文库
浏览记录
ID:9882529
大小:2.37 MB
页数:41页
时间:2018-05-11
《linux程序设计第2章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Shell编程的概念Shell作为用户与Linux之间的接口程序,允许用户向OS直接输入命令,Shell以解释方式执行这些命令。同时,可以以Shell程序设计的方式,编辑具有更大功能的程序,一次性交付系统并被解释执行。在Linux系统中,将在Shell下所编写的程序,通常称为脚本(Script)程序。Shell语法P23Shell变量(1)在Shell中用$变量名,来定义和使用变量。在Shell中,可用echo命令输出常量、变量或者表达式的值。变量的类型有:自定义变量、环境变量和参数变量三种。通常
2、自定义变量是可以自动创建的,自定义变量在默认情况下通常为字符串型。在Shell中,用read语句读取从键盘输入的值,并存放read后变量名所指的内存单元中。在Shell中,总是用双引号来标识字符串或变量的值。如果使用单引号则不能替换出变量的值,而是直接输出单引号括住的字符串。Shell变量(2)环境变量:在Shell编程中,所编写的脚本程序中,允许使用环境变量,实际上这些环境变量就是C/C++中的符号常量。通常环境变量名为大写,以示区别于自定义变量的小写。常用的环境变量有:环境变量说明$HOME当前
3、用户的登录目录$PATH以冒号分隔的路径清单$IFS指定多个输入参数之间的分隔符(空格或制表符或换行符等)Shell变量(3)参数变量:在Shell命令行中,命令所实施的对象,称为参数。脚本程序完成编辑后,也被当作外部命令(区别于内置命令)来执行的,所以,也可以使用相应的参数变量。参数变量说明$1,$2,$3…脚本程序的第1个、第2个、第3个参数。。。$0正在运行的程序(脚本)名$*使用所有的参数,并用$IFS所指定的第1个分隔符(一般为空格)$@使用所有的参数,不使用$IFS所指定的分隔符。(当$
4、IFS=“空“时,用空格分隔各项)示例1sh2$IFS=‘’(IFS设为空)setIyouheshe(设置4个参数变量)echo“$@”(输出参数变量的值,结果是?)echo“$*”(输出参数变量的值,结果是?)unset$IFS(不使用环境变量$IFS中的设置)echo“$*”./sh2运行结果:?示例1结果示例2Hello2.shtitle=”hello”echo$titleecho“参数$0就是正在运行的程序”echo“第1个参数是$1”echo“第2个参数是$2”echo“参数列表是$*”e
5、cho“用户主目录是$HOME”echo“请输入一个新的问候语,存入title”readtitleecho$titleecho“脚本程序运行结束”exit0#./hello2.shABCDE运行结果:?示例2运行结果条件与条件语句在Shell编程中,也与其它语言的编程一样,需要使用条件语句。一个Shell脚本程序能够对任何命令的退出码(结果)进行测试,这也是为什么脚本的最后一行多包含一个exit0语句,表示正常的退出码。在Shell中允许用户自定义多种不同的错误退出码。默认情况下,0是唯一表示正确的
6、退出码。在终端的命令中,Shell提供了一个test或[命令,就是用来测试各种条件的。示例:test–fhello.sh//测试hello.sh是否存在文件有关的条件测试文件条件测试结果-efile文件存在则结果为真-dfile文件是一个子目录则结果为真-ffile文件是一个普通文件则结果为真-sfile文件的长度不为零则结果为真-rfile文件可读则结果为真-wfile文件可写则结果为真-xfile文件可执行则结果为真逻辑运算逻辑运算结果!Expression逻辑表达式求反expr1–aexpr2
7、两个逻辑表达式“And”(“与”)expr1–oexpr2两个逻辑表达式“Or”(“或”)字符串比较字符串比较结果str1=str2两个字符串相同则结果为真str1!=str2两个字符串不相同则结果为真-zstr字符串为空则结果为真-nstr字符串不为空则结果为真算术比较算术比较结果expr1–eqexpr2两个表达式相等则结果为真expr1–neexpr2两个表达式不等则结果为真expr1–gtexpr2expr1大于expr2则结果为真expr1–geexpr2expr1大于或等于expr2则结
8、果为真expr1–ltexpr2expr1小于expr2则结果为真expr1–leexpr2expr1小于或等于expr2则结果为真条件语句if语句(1)if[expression]thenstatementsfiif语句(2)if[expression]thenstatementselif[expression]thenstatementselif…elsestatementsfi示例(1)Hello.shif[-fa.c];thenecho“ok”//如果存在a.
此文档下载收益归作者所有