shell脚本相关

shell语法

说明:

1、本文中我说说明的shell脚本是基于linux基础之上的。
2、大多数的语法我的写法和书本上不一样,但是我写的都是我自己亲身实践出来的,所以可以保证正确性!!!!!

3、shell脚本概念

就是为了完成一个任务,执行指令从上到下的写入到文本文件中,给予执行权限。
可以,举例;在生活中我们买菜来说:
1、明确目的,今天主要买什么菜
2、去超市
3、买完付钱结账
4、回家
这几类似于一个脚本,从上到下的执行你所需要的命令。

第一个“hello world”

我们该如抒写一个脚本呢?

vi script.sh

这样就创建一个脚本文本
如何编译呢;在这里我推荐用 bash编译器来进行,别的方法我不做介绍

bash script.sh

Eg:第一个脚本文件:

#!/user/bin/bash //固定格式,表示定义一个shell脚本。
#hello world! //#表示注释(解释)

echo “hello world!” //输出语句

运行结果:
在这里插入图片描述

shell的格式化输出

1、echo命令

<1>、echo命令介绍:

功能:将内容输出到显示设备,显示文字
语法:echo [-ne][字符串] //这里的-ne不是不等于
补充说明:echo将输入的字符串送到标准输出,在最后自动换行。
命令选项:
-n:不在最后自动换行
-e:出现以下字符,特别处理,不会将他当做一般文字输出,介绍-e的几个常用:
\a, 发现警告,类似于老年卡“哔!老年卡”
\b, 删除前一个字符
\t, 输出一个tab
\n, 换行并将光标定位到头

eg:

echo -n -e “\ttime”:不自动换行,输出一个tab,之后在输出time

<2>、颜色输出

请自行搜索,我不多介绍。

shell格式化输入

read命令

功能:接受键盘输入,回车代表输入结束。
命令介绍:
-p:打印信息;
-t:限定输入时间,比如限定十秒时间:下面做介绍;
-s:不显示:可以说:你在输入的时候,键盘输入不显示
-n:可以限定键盘输入字数:

read -t 30 -p “Please input your name:” name
可以相当于:
echo “Please input your name:”
read -t 30 -p name
#提示"请输入姓名"并等待30秒,把用户的输入保存到变量name中

echo "Name is KaTeX parse error: Expected 'EOF', got '#' at position 7: name" #̲看看变量"name"中是否保存了你的输入

输出输入小综合:

#!/user/bin/bash
#登录界面:
echo -n “login:” //账号:
read
echo -n “password:” //密码:
//read -t10 //限定十秒
//read -s //不显示数字

但是如果我们想知道read输入的是什么该如何操作呢?
这就要引入变量的概念了。这个问题下面做概述。

shell变量概述

定义

变量是编辑中常用的一种临时存取数据的一种方式,计算机会将变量名和内存空间绑定。

变量类型:

1、本地变量:用户私有,只可以在某一个文件使用
2、全局变量:所用用户和文件共享使用

变量格式

变量名=变量值

			注意:
			1、变量名和等号之间不能有空格
			2、只能用英文,下划线,数字,第一个字符不可以用数字
			3、不能用bash关键字

eg:A=123
B=456

读取变量名:echo “$变量名”

上一节的问题遗留解决:

#!/user/bin/bash

echo -n “login:”
read acc //变量名:
相当于 读取数据之后存入变量名acc中
echo -n “password:”
read pw

echo “login:” $acc
echo “password:” $pw
运行结果:
在这里插入图片描述

数组

概述

可以让用户一次输入多个值。

语法

1、初始化:
数组名称=(元素1 元素2 元素3 …)
2、读出数组:
${数组名称[索引]}(索引,即下标)
eg:
在这里插入图片描述
在这里插入图片描述

命令选项:

echo ${array1[0]} 访问数组中的第一个元素
echo ${array1[@]}访问数组中所有元素,一次打印所有数组元素
echo ${#array1[@]}统计数组元素的个数 ,有几个元素
echo ${array2[@]}获取数组元素的索引
echo $farray1[@]:1} 从数组下标1开始
echo ${array1[@]:1:2}从数组下标1开始,访问两个元素

数组遍历

<1>基本数组
1、数组遍历从索引开始。就是用数组下标的方法:
eg:
在这里插入图片描述
<2、>关联数组
声明一个数组;
declare -A ass_array1 //ass_array1数组名

赋值
两种方式
1、
ass_array1[name]=‘baidu’
ass_array1[score]=100
2、
ass_array1=([name]=‘baidu’ [num]=10) //注意不是花括号

调用
格式: echo ${数组名[名称]}
echo ${ass_array1[name]}

eg:
在这里插入图片描述

基本数组和关联数组最大区别:在于声明;

shell流程控制-if语句

<1、>shell五大运算

test 命令:用来做判断
在这里插入图片描述
运行符解释:
1、数学比较运算

-eq:等于
-gt:大于
-lt:小于
-ge:大于或等于
-le:小于或等于
-ne:不等于

2. 字符串比较:

== 等于 两边要有空格
!= 不等
-z 字符串的长度为0时为真
-n 字符串的长度大于0时为真

3. 文件比较:
eg:test -e tt;echo $? 存在是0,不存在是1.

-e file 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行

4.逻辑运算
脚本文件中多用
逻辑与运算: -a
逻辑或运算: -o
逻辑非远算: !

注意事项:
与运算:真真为真,真假为假,假假为假。
或运算:真真为真,真假为真,假假为假。
非运算:非假为真,非真为假。

5.赋值运算

== 赋值运算符

<2、>if语法

1、单if语句
if [表达式]
then
代码块
fi
eg:
在这里插入图片描述
运行结果:
在这里插入图片描述

2、if…esle…
在这里插入图片描述
运行结果:
在这里插入图片描述
3、多if语句
做一个成绩输入终端(并不完全)
1、90以上
2、80-90
3、60-80
4、40-60
5、40以下

可以自己补全文件正确性 :
eg:大于一百怎么办
小于零如何
在这里插入图片描述
运行结果:

在这里插入图片描述

for语法

for介绍:

也被称之为条件循环:当你需要执行多次命令来操作某些东西的时候,但是你又不一直在旁边输入,这个时候你就可以用到for循环

for语法

语法1、

for 变量名 in 数值列表
do
代码块
done

eg:循环输出数字:
在这里插入图片描述
运行:
在这里插入图片描述

语法2、

类似于c
for ((变量名;条件;自加或自减))
do
代码块
done
eg:
在这里插入图片描述
结果:
在这里插入图片描述

用for循环来做成绩:

在这里插入图片描述
结果:
在这里插入图片描述
不知道有的同学没有发现:其实我在输入的时候,发生了越界:不知道你们改正了吗。。

for循环优点:

1、节省内存
2、结构更清晰
3、节省时间成本

shell循环控制

1、sheep N

说明:控制循环节奏
在这里插入图片描述
其中sleep 1 ;表示每隔一秒输出一个,用于控制输出。

2、continue

说明:跳出本次循环,使跳出本次循环
在这里插入图片描述
运行:
在这里插入图片描述
五就跳出了

3、break

说明:终止循环,后续循环不在执行:
在这里插入图片描述
运行:
在这里插入图片描述
到五之后结束。

while和until循环

1、while循环

说明:如果while条件里面的为真,才会执行循环,否则将不会执行

while语法

while [条件]
do
代码块
done

eg:我想输出十个数,为零的时候在开始while循环:

在这里插入图片描述

运行结果:
在这里插入图片描述

^c代表信号

until循环

介绍:

until循环和while正好相反:until循环是条件为假的时候才开始执行,条件为真则不执行。

语法:

until [条件]
do
代码块
done

实践讲解:

在这里插入图片描述
运行结果:
在这里插入图片描述

case语句

case介绍

根据给予的不同条件执行不同的代码块

case语法

语法:
case 变量 in
条件要用到:1)
代码块
;;
条件:2)
代码块
;;
………
esac
注意:每个代码块执行完毕后要以;;结尾代表结束。

case案例

在这里插入图片描述
运行结果:
在这里插入图片描述

案例

我们可以做一个成绩管理系统:
在这里插入图片描述
运行结果:
在这里插入图片描述

shell函数

函数介绍

说明:

我们写代码中使用函数可以是你的代码更简洁,更容易排除错误,我们使用函数,函数就是将你的代码进行模块化,一个模块一个功能。
eg:你找对象:
1、认识
2、表白
3、同居。。试试合不合不和谐
4、见丈母娘
5、结婚
6、没羞没躁的生活
这是不是一个一个模块。

优点:

代码模块化,调试方便,节省内存
排错简单
改变代码执行顺序

函数语法

语法1:

函数名 ()
{
代码块
return N
}

语法2:

function 函数名
{
代码块
return N
}
在shell中 return 可以不用,我下面的介绍两种语法中,一种使用,一种不使用,效果是一样的:

如何调用函数:函数名

函数应用

第一种语法的使用:

函数实践:
在这里插入图片描述
也可以多次调用:
在这里插入图片描述
运行结果:
在这里插入图片描述

第二种语法的使用:

在这里插入图片描述
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值