配色: 字号:
《Linux操作系统》07Shell编程基础
2023-05-25 | 阅:  转:  |  分享 
  
Shell编程基础企业级卓越人才培养方案(信息类专业集群)学习目标熟悉常用的指令与运算符熟悉Shell中各种字符的用法掌握流程控制语句的用法
Shell介绍简介 Shell是一个命令解释器,具有功能相当强大的编程语言,用Shell的编程语言编写的脚本可以直接调用Li
nux系统命令。 Shell位于操作系统最外层,负责直接与用户对话,它解释由用户输入的命令并且把它们送到内核,经过
处理后,将结果输出到屏幕返回给用户。Shell这种对话方式可以是交互式也可以是非交互式,交互式是指从键盘输入命令可以立即得到She
ll的回应,非交互式指Shell脚本。换句话说,Shell为用户提供了一个可视的命令行输入界面,以便向Linux内核发送请求来运行
程序,使用户可以使用Shell命令启动、挂起、停止和编写一些程序。Shell介绍Shell脚本运行(1)可执行程序 将文本保
存为后缀是“.sh”的文本文件,使用“ls -al”命令查看文本文件的权限,当文本文件本身没有可执行权限(即文件权限属性“x”位为
“-”号)时,使用cd命令进入该文本文件所在的目录,通过改变文件权限使程序可以执行。格式如下所示。 注意,一定要写
成“./文件名”,而不是直接写文件名,Linux 系统会在 PATH里寻找有没有该文件,而PATH 里只有 /bin、/sbin、
/usr/bin、/usr/sbin 等目录,当前目录通常不在 PATH 里,所以写文件名找不到命令,要用“./文件名”告诉系统要
在当前目录找文件。Shell介绍Shell脚本运行(2)bash命令 将代码保存为后缀是“.sh”的文本文件,使用
“ls -al”命令查看文本文件的权限,当文本文件本身没有可执行权限(即文件权限属性“x”位为“-”号)时,使用cd命令进入该文本
文件所在的目录,然后利用bash命令运行该文本文件。bash命令格式如下所示。第一个Shell程序如代码所示。Shell基础She
ll常用指令(1)echo 命令 Shell的echo命令用于输出字符串,在echo命令中不能使用转义字符。ech
o命令格式如下所示。echo命令输出字符串,如代码所示。Shell基础Shell常用指令(2)printf命令 She
ll的printf命令用于输出字符串。printf命令由POSIX标准所定义,因此使用printf命令的脚本比使用echo命令的脚
本移植性好,而且与echo命令不同的是,在printf命令中可以使用转义字符。printf命令格式如下所示。format-stri
ng:为格式控制字符串arguments:为参数列表。 其中输出的格式通常有“%d %s %c %f”,Shell基础She
ll常用指令输出格式中的字符转义字符Shell基础Shell常用指令(3)read命令 用于从键盘读取变量的值,通常
使用于Shell脚本与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如
果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY。read命令格式如下所示。常用选项如表所示。Shell基础Shel
l常用指令(4)test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件
三个方面的测试。在测试时需要用到条件测试符方括号。“[”和test等同,“[]”结构中的左中括号是调用test的命令标识,右中括号
用于关闭条件判断。这个命令把它的参数作为比较表达式或者做文件测试,并且根据比较的结果返回一个退出状态码。其中,表达式要放在方括号之
间,并且要有空格,例如: “[$a==$b]”是错误的,必须写成“[ $a == $b ]”。数值测试数值测试常用于两个数字的大小
的比较,常用的用于比较数值的运算符如表所示。Shell基础Shell常用指令字符串运算符字符串运算符用来检测字符串的长度或用于两组
字符串的对比,常用的字符串运算符如表所示。文件测试运算符文件测试运算符用于检测文件的各种属性。表7-7列出了常用的文件测试运算符,
并以一个普通不为空的文件“file”为例。Shell基础变量(1)定义变量Shell在定义变量的规则如下所示。变量名与等号之间不能
存在空格;只能使用英文字母、数字和下划线“_” 命名,且首个字符不能以数字开头;在变量名中不能使用标点符号;尽量不要使用关键字命名
。定义变量如代码所示。Shell基础变量(2)变量类型变量分为环境变量和普通变量。普通变量在脚本或命令中定义,仅在当前Shell实
例中有效,其他Shell启动的程序不能访问局部变量。环境变量通常是由系统自定义的,必要的时候Shell脚本也可以定义环境变量。环境
变量可以被所有程序(包括Shell启动的程序)访问,有些程序需要环境变量来保证其正常运行。常见的环境变量及其含义如表所示。Shel
l基础变量(3)声明变量declare命令用于声明Shell变量并设置变量的属性。其常用格式如下所示。选项如表所示Shell基础变
量除帮助解释器识别变量的边界外,{}还可以用作扩展变量,如表所示。Shell基础运算符算数运算符Shell基础运算符位运算符常用的
位运算符有按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移运算(<<)、右移运算(>>)。位运算符在计算时是面向二进
制数字而言的,下面是位运算符的运算方法。在“按位与”中,按位比较二进制数,上下均为1取1,否则取0,计算方式如下。在“按位或”中,
按位比较二进制数,上下有一个为1则为1,否则取0,计算方式如下。在“按位非”中,按位取与自身相反的数,不同的是按位或计算出来的结果
中如果第一位是0,该0代表的是负数,计算方式如下。Shell基础运算符在“按位异或”中,按位比较二进制数,上下相同取1,上下不同取
0,计算方式如下所示。“左移运算”是将二进制数整体左移指定位数,左移之后的空位用0补充,计算方式如下所示。“右移运算”是将二进制数
整体右移指定位数,右移之后的空位用0补充,计算方式如下所示。Shell基础运算符布尔运算的结果只有“true”与“false”两种
情况,下表列出了常用的布尔运算符。逻辑运算符的结果也只有“true”与“false” 两种情况,下表列出了常用的逻辑运算符。She
ll基础字符(1)通配符 通配符指的是该字符可以匹配任意字符,常用于模式匹配,在查询、修改等操作的时候非常好用,常
见的通配符有、?和[]括起来的字符序列,具体作用如表所示。(2)引用Shell流程控制语句条件控制语句(1)if语句if语句分为
if/else语句与if/elif/else语句。if/else语句if/else语句格式如下所示。条件是值为true或false
的表达式,可以是命令、函数或test语句。执行流程如流程图所示。Shell流程控制语句条件控制语句if/elif/else语句if
/elif/else语句格式如下所示。条件是值为true或false的表达式。if/elif/else语句的执行过程如图所示。Sh
ell流程控制语句条件控制语句case语句case语句适用于需要进行多重分支的应用情况。case分支语句的格式如下所示。case语
句的执行过程如图所示。Shell流程控制语句条件控制语句case语句case语句适用于需要进行多重分支的应用情况。case分支语句
的格式如下所示。case语句的执行过程如图所示。Shell流程控制语句循环语句(1)for循环for循环有如下两种格式。for循环
的流程图如图所示。Shell流程控制语句循环语句(2)while循环while循环用于不断执行一系列命令,也用于从输入文件中读取数
据;命令通常为测试条件。其格式如下所示。while循环的流程图如图所示Shell流程控制语句循环语句(3)until循环until
循环执行一系列命令直至条件为 true 时为止。until 循环与 while 循环在处理方式上刚好相反。只在极少数情况下unt
il 循环比while 循环更加好用。until 语法格式如下所示。 until后面的条件一般为条件表达式,如果返回
值为 false,则继续执行循环体内的语句,否则跳出循环。其流程图如图所示。Shell流程控制语句循环语句(4)select循环s
elect是一种菜单扩展循环方式,其语法和带列表的for循环非常类似,结构如下。Shell流程控制语句循环控制语句(1)break
语句break语句用于终止整个循环的执行。break语句格式如下所示。 在嵌套循环中,break n表示跳出第n层
循环。当n为1时可直接只写“break”命令。break跳出循环如代码所示。Shell流程控制语句循环控制语句(2)continu
e语句continue命令与break命令类似,但是continue命令不会跳出所有循环,仅跳出当前循环。continue语句格式如下所示。在嵌套循环中,continue n表示跳出第n层循环。当n为1时可直接只写“continue”命令。continue跳出循环如代码所示。LOGO本项目主要介绍Shell编程基础,重点介绍Shell脚本中的常见指令与各种字符、运算符的运用,熟练掌握Shell的流程控制语句。通过对本项目的学习熟练使用shell脚本编程。
献花(0)
+1
(本文系大高老师首藏)