操作系统day-05

Shell编程

第一个Shell程序

第一行: #! 是一个约定的标记,告诉系统这个脚本需要什么解释器来执行,即使用哪种shell。后面的/bin/bash指明了解释器的具体位置。

第二行:echo命令是向标准输出设备(显示器)输出文件,写在.sh文件中和在终端直接输入命令效果一样。

代码后面的内容,#表示注释的作用,注释的代码不会被系统解析

稍微复杂一点的Shell脚本

read person: 表示让用户从终端输入一个名字,把这个名字赋值给变量person

$person :表示将上面输入的名字带入到这个位置,然后执行输出

Shell:也是一种编程语言,跟C、Java不同的是,shell是一种弱类型语言,是一种解释性语言,直接通过解释器解释。

Shell变量

变量的定义、赋值、删除

变量是任何的编程语言不可缺少的部分,变量是用来存放数据的。

变量其实就是在内存中开辟的一小块空间。

解释性语言里面,声明变量不需要指明类型

在shell中,所有的变量的值,都是字符串

定义变量的方式:

变量名=值

变量名='值'

变量名="值"

变量名的命名规范:

由数字、字母、下划线组成

必须以字母或者下划线开头

不能使用关键字

尽量让变量可以望文知意

使用变量,在变量名前加上$符号

变量在使用的时候,可以加上{}

如果不加{} ,变量不会被解析

变量可以被新值重新赋值,原来的值就失效了

单引号和双引号的区别

输出的时候使用双引号的话,会将双引号中的变量解析为定义好的值,然后输出,单引号不会解析这个变量,直接将原内容输出。

一般输出的时候使用双引号。

输出结果

只读变量 readonly

删除变量

unset 变量名

删除以后,变量就不能再使用了,不能删除只读变量

echo 向屏幕输出一行内容

echo -n 实现输出内容不换行

定义一个人,姓名是tom,年龄是30,身高是180cm,体重是70kg,使用echo输出这个人的自我介绍

格式是:我是xxx,我今年XX岁,我的身高是XXcm,我的体重是xxkg。

结果

Shell的数学运算

常用的算数运算符

表达式:使用运算符连接的式子,如a>b,称为表达式,

表达式的结果是true or false 在Linux使用1和0表示

+、-、*、/、%(求余)

** 幂运算 2**3 ==> 2^3 ==8

++,-- 自增、自减 ,给自身加1或者减1

!、&&、|| 逻辑取反、逻辑与、逻辑或

> , >= , < , <= 比较运算符

== 、!=、= 相等 不等 赋值

+=、-=、*=、/= 赋值运算符 a+=1 表示a=a+1

Linux的运算工具

(( )) 用于整数运算 ,效率较高

let 用于整数运算,和括号类似

$[ ] 用于整数运算

expr 用于整数运算,也可以处理字符串,写起来麻烦

bc 可以处理整数和小数

(( )) 的使用

((表达式))

第一种用法:声明变量,直接把变量写在(())里面,可以不用加$

第二种用法:如果变量写在(())外面,那么需要加上$

++、--操作 : 如果++在变量之后,执行的时候,先把变量参与其他的运算以后,再做++操作,做完++操作,把变量值改变

如果++在变量之前,先执行++操作,然后再执行其他运算

逻辑运算符 !,&&,||

取反运算需要使用 $[ ]

let的用法

let x+y

条件分支语句

正常情况下,代码从上到下,依次执行

通过条件分支语句,可以改变代码的运行顺序,按照给定的条件进行执行对应的代码

if语句

if 条件

then

代码体

fi

或者

if 条件 ; then

代码体

fi

如果条件的结果为真,那么则执行代码体语句

结果

判断其他情况的语法:

if 条件

then

代码体1

else

代码体2

fi

结果

输入学生的成绩,来判断成绩的等级,90分以上 为优秀,80-90为良好,70-80为一般,60-70为刚及格,小于60为不及格。

练习1

输入学生的成绩,来判断成绩的等级,90分以上 为优秀,80-90为良好,70-80为一般,60-70为刚及格,小于60为不及格。

判定输入的数字1-7,返回星期几,1对应星期一,7对应星期天,如果输的值不在范围,提示输入错误

case in 语句

语法:

case 变量 in

值1)

代码体1

;;

值2)

代码体2

;;

...

*)

代码体n

esac

示例:

循环语句

一般,在出现一些重复性代码语句,然后输出的内容相同或者不同的情况,可以优化代码为循环语句

while循环

语法

while 条件

do

代码体

条件变化语句

done

使用while循环求1-100 的和

求1-100之间偶数的和

写一个循环,实现从键盘输入两个数,求这两个数之间的所有数字的和

通过循环来实现一个简单的加法计算器,用户循环输入数字,计算最后用户输入的所有数字的和

结果

for循环

语法:

for((表达式1;表达式2;表达式3))

do

代码体

done

1,先执行表达式1

2,再执行表达式2,如果2成立,执行代码体,如果不成立,循环结束

3,代码体执行完以后,再执行表达式3

4,重复执行2和3,直到2不成立,结束循环

使用for循环求1-100的和

for循环的嵌套

******

******

******

******

使用for循环写一个乘法口诀表

打印等腰三角形

结果

for in 循环

语法:

for 变量 in 值的集合

do

代码体

done

1-100的和

1-100的偶数和

列出当前目录中的以.sh结尾的脚本文件

break

跳出当前循环

break n,表示跳出循环才层数,不加n表示跳出当前整个循环

continue

跳出本次循环,执行下一次循环

break的使用

continue的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码老祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值