硅谷嵌入式教育真实项目为依托学习目标学员需要掌握如下内容学会使用Shell编程能够编写Shell脚本程序掌握Shell编程中用到的变量,流程控制语句,常用命令特殊符号基本学会使用Shell脚本函数Linux常用命令与shell硅谷嵌入式教育真实项目为依托Shell编程简介Shell提供了一种以脚本文件的方式来实现之,将所有需要执行的命令按照类似于编程的方法写到一个文件中,当需要使用时,只需要运行这个文件即可完成指定的任务Shell脚本文件的运行同可执行文件的使用方法相同,在命令提示符下输入文件的路径即可运行硅谷嵌入式教育真实项目为依托系统变量硅谷嵌入式教育真实项目为依托条件测试条件测试可以判断脚本程序运行的状态。它常用于条件分支,以便在不同的运行状态下执行不同的命令。[param1判断符号param2][判断符号param]硅谷嵌入式教育真实项目为依托文件状态测试-bfilename判断文件filename是否为块设备,若文件不存在返回假。-cfilename判断文件filename是否为字符设备,若文件不存在返回假。-dpathname判断路径pathname是否为目录,若路径不存在返回假。-epathname判断路径pathname是否存在。-ffilename判断文件filename是否为真会文件,若文件不存在返回假。-gpathname判断路径pathname是否设置了SGID位,若路径不存在返回假。-hfilename判断文件filename是否为链接文件,若文件不存在返回假。-kpathname判断路径pathname是否设置了“粘滞”位,若路径不存在返回假。硅谷嵌入式教育真实项目为依托-pfilename判断文件filename是否为管道文件,若文件不存在返回假。-rpathname判断路径pathname是否为可读,若路径不存在返回假。-sfilename判断文件filename的尺寸是否大于0,若文件不存在返回假。-Sfilename判断文件filename是否是Socket,文件不存在返回假。-upathname判断路径pathname是否设置了SUID位,若路径不存在返回假。-wpathname判断路径pathname是否为可写,若路径不存在返回假。-xpathname判断路径pathname是否为可执行,若路径不存在返回假。硅谷嵌入式教育真实项目为依托-Opathname判断路径pathname是否为当前用户所拥有,若路径不存在返回假。-Gpathname判断路径pathname的用户组是否为当前用户所在组,若路径不存在返回假。file1-ntfile2判断文件file1是否比文件file2新。file1-otfile2判断文件file1是否比稳健file2旧。硅谷嵌入式教育真实项目为依托逻辑操作param1–aparam2逻辑与。param1–oparam2逻辑或。!param逻辑非。硅谷嵌入式教育真实项目为依托字符串测试-zstring判断字符串string是否为空串,即长度为0。-nstring判断字符串string是否为非空串。string1=string2判断字符串string1和string2是否相等。string1!=string2判断字符串string1和string2是否不等。string1string2按字符编码表排序,字符串string1是否在string2之前。string1string2按字符编码表排序,字符串string1是否在string2之后。硅谷嵌入式教育真实项目为依托数值测试val1–eqval2判断val1和val2的数值是否相等。val1–neval2判断val1和val2的数值是否不等。val1–ltval2判断val1是否小于val2。val1–leval2判断val1是否小于等于val2。val1–gtval2判断val1是否大于val2。val1–geval2判断val1是否大于等于val2。硅谷嵌入式教育真实项目为依托Shell流程控制语句流程控制包括条件执行、循环、分支执行。硅谷嵌入式教育真实项目为依托if语句if…;then……elif…;then……else……fi硅谷嵌入式教育真实项目为依托if[$#-gt0];thenecho“Thereis$#parameter(s).”elseecho“Thereisnoparameter.”fi硅谷嵌入式教育真实项目为依托case语句casestrinpattern)dosomething;;……esac硅谷嵌入式教育真实项目为依托Case“$country”in“China”)echo“NiHao.”;;“Japan”)echo“fuckyou”;;“England”)echo“Hello.”’;;*)echo“???.“;;esac当变量country为China时NiHao,为Japan输出Konnichiha,为England输出Hello,为其他时输出???.硅谷嵌入式教育真实项目为依托while语句while…;do……doneuntil…;do……done硅谷嵌入式教育真实项目为依托例:计算1到100的和i=0sum=0while[$i–lt100];doleti+=1letsum+=$idoneecho“sumis$sum”注:let为算术赋值硅谷嵌入式教育真实项目为依托for语句forvarinstr1str2…;do……done硅谷嵌入式教育真实项目为依托Shell编程中的常用命令与符号read命令命令的语法:read[参数]变量名常用的参数如下:-ttimeout设定超时时间。-pprompt设定提示信息,该提示信息将会显在光标前。硅谷嵌入式教育真实项目为依托select命令selectvarinstr1str2…;dobreak;done硅谷嵌入式教育真实项目为依托花括号花括号是一种强制的整体标识,可以让一个非整体的字符串强制的解释成一个整体{catabc.txtecho“aaa”}硅谷嵌入式教育真实项目为依托引号单引号可以取消所有的转义符号、通配符和分隔符,双引号取消通配符和分隔符的转义,但对于变量依然进行转义硅谷嵌入式教育真实项目为依托例“aaabbb”‘aaabbb’*.txta.txtb.txt“*.txt”*.txt‘*.txt’*.txt硅谷嵌入式教育真实项目为依托假设变量a的值为123,那么12$a12与123组成的字符串“12$a”12123’12$a’12$a硅谷嵌入式教育真实项目为依托注释注释语句所在行的第一个字符必须为“#”,其后是注释的内容。硅谷嵌入式教育真实项目为依托函数Shell中函数被看成是一个小的脚本程序,仅在当前脚本内部进行调用funname(){……}硅谷嵌入式教育真实项目为依托应用实例训练例1.需要完成一个程序,用户输入百分制的分数,之后返回“A”“B”“C”“D”“E”的等级。其中,A等级为90至100分,B等级为80至89分,C等级为70至79分,D等级为60至69分,E等级为0至59分。硅谷嵌入式教育真实项目为依托needquit=0while[$needquit-eq0]doechoPleaseinputthescorereadscorecase$scorein100|9[0-9])echoVeryGood;;8[0-9])echoGood;;7[0-9])echoMiddle;;6[0-9])echoPass;;[1-5][0-9])echoFailure;;quit|q)echoQuitneedquit=1;;*)echoWrongInput!;;esacechodone硅谷嵌入式教育真实项目为依托例2.完成一个文件操作,根据用户指定的目录,删除其中所有文件名以“.c”结尾的文件,若这些文件删除后,目录中没有其他的文件,则将该目录也一并删除。硅谷嵌入式教育真实项目为依托#/bin/bashforiin$*;dofind$i-name*.c|xargsrm-rf;if[`ls-A$i`==];thenrmdir$iechoDeleteDirectory$ifidone~/:在根目录下查找-name查找文件名的方式“*.c”文件名中要求后缀是c的所有文件-exec找到后执行命令rm-rf{}命令就是删除文件\;这是格式要求的,没有具体含义。硅谷嵌入式教育真实项目为依托思考与练习思考Shell编程与Shell命令之间的关系。阅读资料,了解Shell启动的流程,体会Shell脚本程序在Shell启动过程中的作用。用Shell编程的形式完成下列程序:1.输出用户通过命令行参数形式提供的多个整数的平均数。具体调用格式如下:$./avg12345678Average:45硅谷嵌入式教育真实项目为依托2.文件备份。备份用户指定的文件,将文件备份到目录“文件名_backup”中(若目录不存在则自动建立),备份文件的文件名格式为“文件名_bak_年月日_时分秒”。3.将用户提供的二进制数转化为十进制数。(选作)具体的调用格式如下:$./bin2dec10011001(b)=9(d)$./bin2dec222222isnotavaluablebinarynumber.