《7、Linux Shell 编程.pdf》由会员分享,可在线阅读,更多相关《7、Linux Shell 编程.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux Shell 编程编程大连东软信息技术学院大连东软信息技术学院计算机系 杨英鹏计算机系 杨英鹏2004.12Shell编程概述编程概述 Shell不仅可以解释用户从键盘输入的命令,还提供了编程的能力不仅可以解释用户从键盘输入的命令,还提供了编程的能力 Shell的程序文件称为的程序文件称为Shell脚本(脚本(script),脚本内包含一系列可以被,脚本内包含一系列可以被Shell解释执行的命令解释执行的命令 Shell脚本不需要编译,直接由脚本不需要编译,直接由Shell解释执行解释执行一个简单的一个简单的Shell脚本脚本 要求:编写一个要求:编写一个Shell脚本,显示当前的时
2、间和当前的用户脚本,显示当前的时间和当前的用户 编写脚本文件编写脚本文件dw,脚本内容为,脚本内容为datewho运行脚本运行脚本 使用使用sh命令:命令:sh 脚本文件名脚本文件名(可含有路径),如可含有路径),如sh dw 使用使用chmod将脚本转变为可执行文件将脚本转变为可执行文件,直接执行脚本文件即可。如直接执行脚本文件即可。如chmod u+x dwdw变量变量 Shell允许用户定义变量存储数据。如允许用户定义变量存储数据。如v1=abc建立了一个变量建立了一个变量v1,它的值是字符串,它的值是字符串abc。如果变量的值含有空格,则需要用引号括起来,如如果变量的值含有空格,则需要
3、用引号括起来,如v2=“a bc”引用变量的值要通过引用变量的值要通过$符号,如要将变量符号,如要将变量v2的值赋值给变量的值赋值给变量v1,语句为,语句为v1=$v2(v1=v2 错误!)错误!)变量一旦建立,将保存到内存中直到变量一旦建立,将保存到内存中直到Shell脚本结束,但可以使用脚本结束,但可以使用unset命令清除变量命令清除变量 例子脚本:例子脚本:var位置变量位置变量 Shell内置了一些特殊的位置变量,命令行的参数被自动地存入这些位置变量供内置了一些特殊的位置变量,命令行的参数被自动地存入这些位置变量供Shell脚本使用脚本使用 常用的位置变量有(表常用的位置变量有(表1
4、1.4)$0:代表脚本文件名:代表脚本文件名$1,$2.$9:代表第:代表第1个到第个到第9个命令行参数个命令行参数$#:代表命令行参数的个数:代表命令行参数的个数$*:代表所有的命令行参数:代表所有的命令行参数$:代表当前的进程号:代表当前的进程号 例子脚本:例子脚本:posiParamread命令命令 作用:在作用:在Shell脚本中读取用户的输入,存入变量中脚本中读取用户的输入,存入变量中 格式:格式:read 变量名变量名,如如 read name 例子脚本:例子脚本:readInput,readInput2点点(.)命令命令 当执行一个脚本时,通常当执行一个脚本时,通常Shell会创
5、建一个子进程去执行脚本。会创建一个子进程去执行脚本。但使用点但使用点(.)命令来执行脚本时,命令来执行脚本时,Shell不创建子进程直接在当前不创建子进程直接在当前Shell中执行脚本中执行脚本 例如在当前的例如在当前的Shell内执行一个内执行一个bye脚本,命令为脚本,命令为.bye(.和和 bye之间要有一个空格)之间要有一个空格)exit命令命令 在在Shell脚本中执行脚本中执行exit命令将立即结束命令将立即结束Shell脚本的执行脚本的执行 如果在如果在Shell中执行中执行exit命令,用户将退出登录命令,用户将退出登录选择结构选择结构选择结构选择结构 if-else语句语句
6、case语句语句if-else语句语句 一般格式一般格式if 条件条件then命令命令else命令命令fi例子:例子:if2if-else语句语句 省略省略else子句子句if 条件条件then命令命令fi例子:例子:if1if-else语句语句 if语句的嵌套语句的嵌套if 条件条件thenif 条件条件then命令命令else命令命令fielse命令命令fi例子:例子:if5if-else语句语句 练习:从键盘输入三个数,输出其中最大的数字练习:从键盘输入三个数,输出其中最大的数字 参考脚本:参考脚本:largest,largest2测试条件测试条件 数值判断(表数值判断(表11.5)例子
7、:例子:largest,largest2 字符串比较(表字符串比较(表11.6),例子:例子:strcompare,strtest 文件检测(表文件检测(表11.7)例子:例子:filetestcase语句语句 case 变量值变量值 in表达式表达式1)命令命令;表达式表达式2)命令命令;.*)命令命令 esac 例子:例子:case1,case2,append循环结构循环结构循环结构循环结构 for循环循环 while循环循环 until循环循环for循环循环for variable in list-of-values docommandsdone variable依次取遍依次取遍list
8、-of-values中的每一个值,每取一个值,执行一次循环,中的每一个值,每取一个值,执行一次循环,list-of-values中的值都取完后,循环结束中的值都取完后,循环结束 例子:例子:for1for循环循环 练习练习1:使用:使用for循环显示出所有的命令行参数循环显示出所有的命令行参数 练习练习2:编写一个脚本,从命令行接收若干个文件名或目录名作为参数,检测这些文件或目录是否存在,并输出相应的信息提示用户:编写一个脚本,从命令行接收若干个文件名或目录名作为参数,检测这些文件或目录是否存在,并输出相应的信息提示用户while循环循环while condition docommandsdo
9、ne 当条件成立时,执行当条件成立时,执行commands 例子:计算例子:计算1+2+3+.+10while循环循环 如何对变量进行算术运算?如何对变量进行算术运算?使用使用let命令或命令或expr命令,如命令,如 let i=i+1,let s=s+i,let s=s*i,let a=$b+$c(P252)注意:不能直接使用注意:不能直接使用$i=$i+1,$a=$b+$c等之类的语句进行算术运算等之类的语句进行算术运算 练习:输入两个整数(不为练习:输入两个整数(不为0),输出它们的四则运算和模运算的值),输出它们的四则运算和模运算的值while循环循环 练习;从键盘输入一个数字练习;从键盘输入一个数字n,计算,计算1+2+3+n的值的值until循环循环until condition do commandsdone 执行执行commands命令,直到命令,直到condition条件成立条件成立 例子:检测用户是否登陆例子:检测用户是否登陆(p258)练习练习 P263 6题、题、7题、题、8题题
限制150内