🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
第八章 Shell程序设计
学习目的
应用已有功能解决常见管理维护需求的能力,尤其是利用shell编程解决问题的能力。
学习要求
了解:shell程序的建立和运行,shell程序调试。
理解:shell程序语言结构
掌握:shell 语言结构,包括测试、分支、循环、跳转、函数、语句组等。
学习方法
本章主要关于shell程序设计,需要学生掌握shell 语言结构,包括测试、分支、循环、跳转、函数、语句组等并且亲自动手实践,培养shell编程能力。
概念和原理
8.1 Shell编程语言
(1) shell脚本
▪ 用shell语言编写的程序称为 shell脚本或 shell程序。
▪ shell脚本是一个普通的文本文件,其中包含将由shell 执行的一系列命令,这些命令与用户在命令行上输入的命令完全相同。
▪ 当运行一个shell脚本时,脚本文件中的每条命令都被传送给shell解释执行,一次执行一条命令。当所有的命令执行完毕或出现错误时,脚本终止运行。
(2) shell编程的基本过程
- 建立 shell 文件
包含任意多行操作系统命令或shell命令的文本文件;
- 赋予shell文件执行权限
用chmod命令修改权限;
- 执行shell文件
直接在命令行上调用该shell程序.
8.2 shell程序和语句
8.2.2 shell程序和语句
shell语句包括三大类:
▪ 说明性语句:
以#号开始到行尾的部分,不被解释执行。
▪ 功能性语句:
任意的操作系统命令、shell内部命令、自编程序、其它shell程序名等。
▪ 结构性语句:
条件测试语句、多路分支语句、循环语句、循环控制语句等。
8.2.3 shell的功能性语句
(1) read命令
read从标准输入读入一行, 并赋值给后面的变量, 其语法为
read var
把读入的数据全部赋给var
read var1 var2 var3
把读入行中的第一个参数赋给var1, 第二个参数赋给var2, ……,把其余所有的参数赋给最后一个变量.
(2) expr命令
算术运算命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(*)、整除(/)和求模(%)等操作。例如:
$ expr 12 + 5 * 3
27
$ expr 3 - 8 / 2
-1
$ expr 25 % 4
1
$ num=9
$ sum=expr $num \* 6
$ echo $sum
54
(3) tput命令
tput命令主要用于设置终端工作模式, 或读出终端控制字符。
tput命令与终端控制代码数据库terminfo相连, 根据shell环境变量TERM的值, 读出这种终端的指定功能控制代码。
8.2.5 shell的结构性语句(上)
(1) 测试语句
test语句可测试三种对象 : 字符串 整数 文件属性
(2) 条件语句
▪ 语法结构:
if 表达式
then 命令表
fi
如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。 if和fi是条件语句的语句括号, 必须成对使用。
▪ 语法结构为:
if 表达式
then 命令表1
else 命令表2
fi
如果表达式为真, 则执行命令表1中的命令, 退出if语句; 否则执行命令表2中的语句, 退出if语句。
(3) 多路分支语句
多路分支语句case用于多重条件测试, 语法结构清晰自然. 其语法结构为:
case 字符串变量 in
模式1)
命令表1
;;
模式2)
命令表2
;;
……
模式n)
命令表n
;;
esac
8.2.6 shell的结构性语句(下)
(1) 循环语句
▪ 当循环次数已知或确定时, 使用for循环语句来多次执行一条或一组命令. 循环体由语句括号do和done来限定。 格式为:
for 变量名 in 单词表
do
命令表
done
▪ 语法结构为:
while 命令或表达式
do
命令表
done
while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
▪ 语法结构为:
until 命令或表达式
do
命令表
done
until循环与while循环的功能相似, 所不同的是只有当测试的命令或表达式的值是假时, 才执行循环体中的命令表, 否则退出循环。这一点与while命令正好相反。
(2) 循环控制语句
▪ break语句从包含该语句的最近一层循环中跳出一层, break n 则跳出n层;
▪ continue语句则马上转到最近一层循环语句的下一轮循环上, continue n则转到最近n层循环语句的下一轮循环上.
8.3 shell函数
8.3.1 shell函数
▪ 在shell程序中, 常常把完成固定功能、且多次使用的一组命令(语句)封装在一个函数里,每当要使用该功能时只需调用该函数名即可。
▪ 函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。
▪ 调用程序可传递参数给函数, 函数可用return语句把运行结果返回给调用程序。
▪ 函数只在当前shell中起作用, 不能输出到子shell中。
▪ shell函数的说明格式
function_name ( )
{
command1
……
commandn
}
函数的调用格式:
value_name=function_name [arg1 arg2 … ]
或者:
function_name [arg1 arg2 … ]
echo $value_name
重点
shell语言结构。
难点
shell语言结构(测试语句、条件语句、多路分支语句、循环语句、循环控制语句)。
原创声明
=======
作者: [ libin9iOak ]
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片
,加入IT技术核心学习团队。一起探索科技的未来,共同成长。