Shell脚本基础

shell基本语法
shell变量及运用
数学运算
实战-升级系统中的java版本到1.8版本-为后期安装Hadoop集群做准备

19.1 shell基本语法

Shell是一个命令解释器 交互式
在这里插入图片描述

低级语言:
机器语言:二进制语言
汇编语言:符号语言,使用助记符来代替操作码,也就是用符号代替机器语言的二进制码
高级语言:比较接近自然语音或者说人类语言的一种编程,用人们能够 容易理解的方式进行编写程序
静态语言:编译型语言 如:c、c++、java等
动态语言:解释型语言 如:php、shell、python、perl

gcc编译器:(解释器) 将人类理解的语言翻译成机器理解的语言

**shell脚本:**就是说我们把原来linux命令或语句放在一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为shell脚本或者shell程序;我们可以在脚本中输入——系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的shell脚本

创建shell流程
创建一个包含命令和控制结构的文件–》赋予可执行权限 chmod+x --》检测语法错误–》执行

shell脚本执行方式
/root/test.sh
bash test.sh & sh test.sh
source test.sh
sh < test.sh & cat test.sh | sh(bash)

shell变量及运用

shell变量
变量是shell传递数据的一种方法。变量是用来代表每个值的符号名。我们可以把变量当成一个容器,通过变量,可以在内存中存储数据。也可以在脚本执行中进行修改和访问存储的数据
变量的设置规则
1、变量名称通常是大写字母,它可以由数字、字母(大小写)和下划线_组成。变量名区分大小写;但是要注意变量名称不能已数字开头
2、等号=用于为变量分配值,在使用过程中等号两边不能有空格
3、变量存储的数据类型是整数值和字符串值
4、在对变量赋予字符串值时,建议用引号将其括起来。因为如果字符串中存在空格符号。需要使用单引号货双引号
5、要对变量进行调用,可以在变量名称前加美元符号$
6、如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要使用双引号包含" 变 量 名 &quot; 或 用 变量名&quot;或用 "(变量名)包含

变量的分类
1、用户自定义变量
2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据
3、位置参数变量:这种变量主要是用来向脚本当中传递参数或者数据的,变量名不能自定义,变量作用是固定的
4、预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
按照变量作用可以分为两类:全局变量和局部变量
局部变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其他程序不可见。包括:用户自定义变量、位置变量和预定义变量
全局变量是环境变量,其值不随shell脚本的执行结束而消失

用户定义变量
a=1
b=2 由字母或下划线打头 不允许数字开头 并且大小写字母意义不同
使用变量需在变量前加$ echo $a

date + “%Y/%m/%d %H/%M/%S” 使用/做分隔符

date 命令加减操作:
date +%Y%m%d #显示当天年月日
date -d “+1 day” +%Y%m%d #显示明天的日期
date -d “-1 day” +%Y%m%d #显示昨天的日期
date -d “-1 month” +%Y%m%d #显示上一月的日期
date -d “+1 month” +%Y%m%d #显示下一月的日期
date -d “-1 year” +%Y%m%d #显示前一年的日期
date -d “+1 year” +%Y%m%d #显示下一年的日期

命令嵌套使用 ( ( (())
‘’在单引号中所有的字符包括特殊字符(KaTeX parse error: Can't use function '\)' in math mode at position 7: ,'','和\̲)̲ 都将解释成字符本身而成为普通…,’‘,`和\以外所有字符都解释成字符本身,拥有“调用变量的值” “引用命令”和“转义符”的特殊含义
注:\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。
如$将输出$符号,而不是当作变量引用

例:echo $a 123
echo $a $a

例 1:给变量值赋于多个单词,需要使用单引号和双引号
[root@xuegod63 ~]# VAR8=‘xuegdo mk’
[root@xuegod63 ~]# echo $VAR8
xuegdo mk
例 2:赋值时单引号和双引号的区别
[root@xuegod63 ~]# VAR8=‘xuegod mk $VAR1’
[root@xuegod63 ~]# VAR9="xuegod mk KaTeX parse error: Expected 'EOF', got '#' at position 7: VAR1" #̲双引中符号有作用
[root@xuegod63 ~]# echo $VAR8
xuegod mk $VAR1
[root@xuegod63 ~]# echo $VAR9
xuegod mk 123
注:单引号之间的内容原封丌劢赋值给变量, 双引号之间的内容如有特殊符号会保留它的特殊含义
删除变量
[root@xuegod63 ~]# unset VAR1
[root@xuegod63 ~]# echo $VAR1

环境变量
在 bash shell 中,环境变量分为两类:全局变量和局部变量
全局变量:对于 shell 会话和所有的子 shell 都是可见的
局部变量: 它叧在自己的迕程当中使用

例 1: 局部变量
[root@xuegod63 ~]# VAR1=123
[root@xuegod63 ~]# echo $VAR1
123
[root@xuegod63 ~]# vim a.sh
#!/bin/bash
echo $VAR1
[root@xuegod63 ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 27: …oot@xuegod63 ~]#̲ bash a.sh #执行 …VAR1 的值

env: 显示的是全局变量 set: 显示的是全局和局部变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值