Shell脚本编程基础知识.pptx
《Shell脚本编程基础知识.pptx》由会员分享,可在线阅读,更多相关《Shell脚本编程基础知识.pptx(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1Shell脚本脚本(jiobn)编程基础知识编程基础知识第一页,共74页。主要主要(zhyo)内容和学内容和学习要求习要求q 掌握创建 shell 脚本的基本步骤q 学会使用条件测试q 掌握 if 条件结构与 case 选择结构q 掌握 for 循环、while 循环和 until 循环结构q 学会 shift 命令(mng lng)的使用q 学会 shell 脚本的调试第1页/共74页第二页,共74页。q Shell 脚本(jiobn)Shell 脚本脚本(jiobn)如果有一系列你经常使用的Linux命令,你可以把它们存储在一个(y)文件里,shell可以读取这个文件并顺序执行其中
2、的命令,这样的文件被称为脚本文件。shell 脚本按行解释。第2页/共74页第三页,共74页。q Shell 脚本(jiobn)的编写l Shell 脚本是纯文本文件,可以使用任何文本编辑器编写(binxi)l Shell 脚本通常是以.sh 作为后缀名q Shell 脚本(jiobn)的执行chmod+x script_name./script_namebash script_name第3页/共74页第四页,共74页。u 第一行:指定用哪个程序来编译和执行(zhxng)脚本。q Shell 脚本(jiobn)的格式#!/bin/bashu 可执行(zhxng)语句和 shell 控制结构u
3、注释:以“#”开头,可独占一行,或跟在语句的后面。Shell 脚本脚本#!/bin/sh#!/bin/csh一个 shell 脚本通常由一组 Linux 命令、shell 命令、控制结构和注释语句构成。在脚本中多写注释语句是一个很好的编程习惯 第4页/共74页第五页,共74页。#!/bin/bash#This is the first Bash shell program#ScriptName:greetings.shechoecho e Hello$LOGNAME,cecho its nice talking to you.echo Your present working director
4、y is:pwd#Show the name of present directoryechoecho e The time is date+%T!.nByeechobash greetings.shchmod+x greetings.sh./greetingsShell 脚本脚本(jiobn)举例举例第5页/共74页第六页,共74页。echo命令(mng lng)n n功能说明:显示文字。n n语 法:echo-ne字符串n n 或 echo-help-version n n补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开(ki),并在最后加上换行号。n n-n
5、不进行换行n n-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出 n 换行 b 空格.第6页/共74页第七页,共74页。参 数:n n-n-n 不要在最后自动换行不要在最后自动换行 n n-e-e 若字符若字符(z f)(z f)串中出现以下字符串中出现以下字符(z f)(z f),则特别加以处,则特别加以处理,而不会将它当成一般文字输出:理,而不会将它当成一般文字输出:n na a 发出警告声;发出警告声;n nb b 删除前一个字符删除前一个字符(z f)(z f);n nc c 最后不加上换行符号;最后不加上换行符号;n nf f 换行但光标仍旧停留在原来的位置;
6、换行但光标仍旧停留在原来的位置;n nn n 换行且光标移至行首;换行且光标移至行首;n nr r 光标移至行首,但不换行;光标移至行首,但不换行;n nt t 插入插入tabtab;n nv v 与与ff相同;相同;n n 插入插入 字符字符(z f)(z f);n nnnn nnn 插入插入nnnnnn(八进制)所代表的(八进制)所代表的ASCIIASCII字符字符(z f)(z f);n n-help-help 显示帮助显示帮助 n n-version-version 显示版本信息显示版本信息第7页/共74页第八页,共74页。#!/bin/bash#This script is to t
7、est the usage of read#Scriptname:ex4read.shecho=examples for testing read=echo-e What is your name?cread nameecho Hello$nameechoecho-n Where do you work?readecho I guess$REPLY keeps you busy!echoread-p Enter your job title:#自动(zdng)读给REPLYecho I thought you might be an$REPLY.echoecho=End of the scri
8、pt=Shell 脚本脚本(jiobn)举例举例第8页/共74页第九页,共74页。read命令命令(mng lng)n nread variable#读取变量(binling)给variablen nread x y#可同时读取多个变量(binling)n nread#自动读给REPLYn nread p“Please input:”n n#自动读给REPLY第9页/共74页第十页,共74页。u 状态变量$?中保存命令(mng lng)退出状态的值grep$USER/etc/passwdecho$?grep hello/etc/passwd;echo$?条件条件(tiojin)测测试试u 条件
9、(tiojin)测试可以根据某个特定条件(tiojin)是否满足,来选择执行相应的任务。u Bash 中允许测试两种类型的条件:命令成功或失败,表达式为真或假u 任何一种测试中,都要有 退出状态(返回值),退出状态为 0 表示命令成功或表达式为真,非0 则表示命令失败或表达式为假。第10页/共74页第十一页,共74页。q 内置测试(csh)命令 testl 通常用 test 命令(mng lng)来测试表达式的值x=5;y=10test$x-gt$yecho$?l test 命令(mng lng)可以用 方括号 来代替x=5;y=10$x-gt$y echo$?q 表达式测试包括字符串测试、整
10、数测试和文件测试。测试表达式的值测试表达式的值方括号前后要留空格!第11页/共74页第十二页,共74页。name=Tom$name=Tt?echo$?l 2.x 版本(bnbn)以上的 Bash 中可以用双方括号来测试表达式的值,此时可以使用通配符进行模式匹配。测试测试(csh)表达表达式的值式的值$name=Tt?echo$?第12页/共74页第十三页,共74页。q 字符串测试(csh)-z str 如果字符串 str 长度为 0,返回真-n str 如果字符串 str 长度不为 0,返回真 str1=str2 两字符串相等 str1!=str2 两字符串不等name=Tom;-z$name
11、;echo$?操作符两边必须(bx)留空格!字符串测试字符串测试(csh)name2=Andy;$name=$name2 ;echo$?第13页/共74页第十四页,共74页。q 整数测试(csh),即比较大小 int1-eq int2 int1 等于 int2 int1-ne int2 int1 不等于 int2 int1-gt int2 int1 大于 int2 int1-ge int2 int1 大于或等于 int2 int1-lt int2 int1 小于 int2 int1-le int2 int1 小于或等于 int2x=1;$x-eq 1;echo$?x=a;$x-eq 1;ech
12、o$?整数整数(zhngsh)测试测试操作符两边必须(bx)留空格!X第14页/共74页第十五页,共74页。q 整数测试(csh)也可以使用 let 命令或双圆括号x=1;let$x=1;echo$?x=1;($x+1=2);echo$?只能用于整数(zhngsh)测试!整数整数(zhngsh)测试测试l 相应的操作符为:=、!=、=、y);thenif(x y);then echo x is larger than y echo x is larger than yelif(x=y);thenelif(x=y);then echo x is equal to y echo x is equa
13、l to yelseelse echo x is less than y echo x is less than yfi fi第22页/共74页第二十三页,共74页。chkperm.sh#!/bin/bash#!/bin/bash#Using the old style test command:#Using the old style test command:#filename:perm_check.sh#filename:perm_check.sh#file=testingfile=testingif -d$file if -d$file thenthen echo$file is a
14、directory echo$file is a directory elif -f$file elif -f$file then then if -r$file-a-w$file-a-x$file if -r$file-a-w$file-a-x$file then#nested if command then#nested if command echo You have read,write,and execute permission on$file.echo You have read,write,and execute permission on$file.fi fielseelse
15、 echo$file is neither a file nor a directory.echo$file is neither a file nor a directory.fi fi第23页/共74页第二十四页,共74页。chkperm2.sh#!/bin/bash#!/bin/bash#Using the new style test command:#Using the new style test command:#filename:perm_check2.sh#filename:perm_check2.sh#file=./testingfile=./testingif -d$fi
16、le if -d$file thenthen echo$file is a directory echo$file is a directory elif -f$file elif -f$file then then if -r$file&-w$file&-x$file if -r$file&-w$file&-x$file then#nested if command then#nested if command echo You have read,write,and execute permission on$file.echo You have read,write,and execut
17、e permission on$file.fi fielseelse echo$file is neither a file nor a directory.echo$file is neither a file nor a directory.fi fi第24页/共74页第二十五页,共74页。name_grep#!/bin/bash#!/bin/bash#filename:name_grep#filename:name_grep#name=Tomname=Tomif grep$name/etc/passwd&/dev/null if grep$name/etc/passwd&/dev/nul
18、l thenthen :elseelse echo$name not found in/etc/passwd echo$name not found in/etc/passwd exit 2 exit 2fi fi第25页/共74页第二十六页,共74页。tellme#!/bin/bash#!/bin/bashecho-n How old are you?echo-n How old are you?read ageread ageif$age-lt 0-o$age-gt 120 if$age-lt 0-o$age-gt 120 thenthenecho Welcome to our plane
19、t!echo Welcome to our planet!exit 1 exit 1 fi fiif$age-ge 0-a$age-le 12 if$age-ge 0-a$age-le 12 thenthenecho Children is the flowers of the countryecho Children is the flowers of the countryelif$age-gt 12-a$age-le 19 elif$age-gt 12-a$age-le 19 thenthenecho Rebel without a causeecho Rebel without a c
20、auseelif$age-gt 19-a$age-le 29 elif$age-gt 19-a$age-le 29 then then echo You got the world by the tail!echo You got the world by the tail!elif$age-ge 30-a$age-le 39 elif$age-ge 30-a$age-le 39 thenthenecho Thirty something.echo Thirty something.elseelseecho Sorry I askedecho Sorry I askedfi fi第26页/共7
21、4页第二十七页,共74页。tellme2#!/bin/bash#!/bin/bashecho-n How old are you?echo-n How old are you?read ageread ageif(age 120)if(age 120)thenthenecho Welcome to our planet!echo Welcome to our planet!exit 1 exit 1 fi fiif(age=0&age=0&age=13&age=13&age=19&age=19&age=30&age=30&age 0)#or$#-gt 0 while($#0)#or$#-gt
22、0 dodo echo$*echo$*shift shiftdonedone第50页/共74页第五十一页,共74页。shft.sh#!/bin/bash#!/bin/bash#Using shift to step through all the positional parameters.#Using shift to step through all the positional parameters.until -z$1#Until all parameters used up.until -z$1#Until all parameters used up.dodo echo$1 ech
23、o$1 shift shiftdonedoneecho#Extra line feed.echo#Extra line feed.exit 0exit 0第51页/共74页第五十二页,共74页。q 生成(shn chn)随机数的特殊变量echo$RANDOM 范围(fnwi)是:0,32767q expr:通用(tngyng)的表达式计算命令表达式中参数与操作符必须以空格分开,表达式中的运算可以是算术运算,比较运算,字符串运算和逻辑运算。expr 5%3expr 5*3#乘法符号必须被转义随机数和随机数和 expr 命命令令第52页/共74页第五十三页,共74页。q 字符串操作(cozu)$#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Shell 脚本 编程 基础知识
限制150内