Shell的学习目标

Shell的基本语法结构: 如:变量的定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等。

基本正则表达式的应用

文件处理:grep、sed、awk工具的使用

使用shell脚本完成复杂的任务:服务搭建、批量处理。

今日目标

掌握Shell变量的定义和获取

Shell简单的四则运算

一、编程语言概述

计算机只能识别机器语言(也就是二进制(0和1))。但是又不能直接使用0和1,必须借助人(工具)来进行翻译成机器语言。而人(工具)就是常说的编译器或者是解释器 。

编程语言的分类

编译型语言 程序在执行之前需要一个编译过程,把程序编译为机器语言文件,运行时不需要重新翻译,直接使用编译的结果即可。程序执行效率高,以来编译器,跨平台性差,如C、C++。

解释型语言 程序不需要编译,程序在运行时由解释器翻译成机器语言,每次执行一次都要翻译一次。效率比较低。如Python/Javascript/Perl/Ruby/Shell等这些都是解释型语言。

总结:

编译型语言比解释型速度较快,但是不如解释型语言跨平台性好。

如果做底层开发或者是大型应用程序或者操作系统一般都用编译型语言。

如果是一些服务器脚本及一些辅助的接口,对速度要要求不高。

对于各个平台的兼容性问题的话一般则是解释型语言。

二、Shell概述

Shell介于用户和内核之间,负责命令的解释。

总结: shell是人机交互的媒介。

shell的种类:

[solerho@localhost ~]$ cat /etc/shells

/bin/sh # 是bash的一个快捷方式

/bin/bash # bash是大多数Linux默认的Shell,包含的功能几乎涵盖了shell的所有功能。

/usr/bin/sh

/usr/bin/bash

1、什么是Shell脚本?

需要执行的命令保存到文本中,按照顺序执行。解释型的语言,所以不需要编译。

可以使用公式来描述:

若干命令 + 脚本基本格式 + 脚本特定语法 + 思想 = Shell脚本

2、Shell脚本的用途

自动化软件部署

LAMP/LNMP/Tomcat

自动化管理

系统初始化脚本、批量更改主机密码、推送公钥等。

自动化分析处理

统计网站访问量

自动化备份

数据库备份、日志转储。

自动化监控脚本

3、Shell脚本的基本写法

3.1 脚本的第一行:字符#!指定解释器【必写】

#!/bin/bash 表示以下内容使用bash解释器解析。

注意点: 如果直接将解释器路径固定在脚本里,可能有些系统会存在找不到解释器的兼容性问题,所以,可以使用 #!/bin/env 解释器进行解析。

3.2 脚本的第二部分:注释(#)号说明,对脚本的基本信息进行描述。 例如:

#!/bin/env bash

# Name:Soler HO

# Desc:description

# path:存放路径

# 下面是脚本的具体内容

commands

…...

3.3 脚本的第三部分:脚本要实现的具体代码内容。

4、Shell脚本的执行方式

4.1 切换到shell脚本所在的目录(此时叫做工作目录)执行shell脚本

4.2 以绝对路径的方式去执行bash shell脚本

4.3 直接使用bash 或sh 来执行bash shell脚本

4.4 在当前的shell环境中执行bash shell脚本

三、变量的定义

1、什么是变量?

可以变化的数据,是用来临时保存数据的。

2、变量的定义格式

变量名=变量值

变量名:用来临时保存数据。

变量值:临时可变化的数据。

例如:

A = hello shell

echo $A #调用变量,必须使用$符号

echo ${A}

$A和${A}的区别:

相同点:都是可以调用变量

不同点:${变量名}可以截取变量的某一部分,而$变量名 不可以。

3、变量的定义规则

变量名区分大小写

变量名不能有特殊符号

如果是有空格的字符串给变量赋值时,需要使用引号。

变量名不能以数字开头。

注意点:不能以数字开头不代表不能包含数字。

等号的两边不能有任何空格。

变量名尽量做到见其名知其意。

一般来说,变量名使用大小写均可。

4、交互式定义变量read

目的:让用户自己给变量赋值,比较灵活。

语法:read [选项] 变量名

常见的选项:

选项

释义

-p

定义提示用户的信息

-n

定义字符数(限制变量值的长度)

-s

不显示(不显示用户输入的内容)

-t

定义超时时间,默认单位为秒(限制用户输入变量值的时间)

例子:

变量值来自文件的例子:

5、定义有类型的变量(declare)

目的:给变量做一些限制,固定变量的类型。例如:整型,只读等。

用法:declare 选项 变量名=变量值

常用的选项:

选项

释义

例子

-i

将变量设置成整数

declare -I A=23

-r

定义只读变量

declare -r B=shell01

-a

定义普通数组;查看普通数组

-A

定义关联数组;查看关联数组

-x

将变量通过环境导出

declare -x AA=1234 等于 export AA=1234

四、变量的分类

1、本地变量:当前用户自定义的变量,当前进程中有效,其他的进程及当前进程的子进程无效。

2、环境变量:当前进程有效,且可以呗子进程调用。

env — —— 查看当前用户的环境变量

set ——— 查询当前用户的所有变量(临时变量与环境变量)

export 变量名=变量值 或者是 变量名=变量值;export 变量名

3、全局变量:所有的用户和程序都能调用,且继承、新建的用户也默认能调用。 相关配置文件的介绍

文件名

说明

备注

$HOME/.bashrc

当前用户的bash信息,用户登陆时读取

定义别名、umaks、函数等

$HOME/.bash_profile

当前用户的环境变量,用户登陆时读取

$HOME/.bash_logout

当前用户退出当前shell时最后读取

定义用户退出时执行的程序

$/etc/bashrc

全局的bash信息,所有用户都有效。

$/etc/profile

全局环境变量信息

系统和用户都生效。

注意点:以上的文件修改后,都需要重新source让其生效或者是退出重新登录。

用户登陆系统读取相关文件的顺序

* /etc/profile

* $HOME/.bash_profile

* $HOME/.bashrc

* /etc/.bashrc

* /etc/.bash_logout

4、系统变量 系统变量(内置bash中变量):shell已经固定好自身的名字和作用。

内置系统变量

含义

$?

上一条命令执行后返回的状态,状态值为0表示执行正常。非0表示执行异常或错误。

$0

当前执行的程序或脚本名

$#

脚本后面接的是参数的个数

$*

脚本后面所有的参数,参数当成一个整体输出,每一个变量参数之间用空格隔开。

$@

脚本后面所有的参数,参数是独立,也是全部输出。

$1-$9

脚本后面的位置参数,$1表示第一个位置参数。

${10}-${n}

位置参数的扩展,第10个位置变量起必须扩起来(两位数字起就扩起来。

$$

当前所在进程的进程号,如echo $$

$!

后台运行的最后一个进程号(当前终端)。

!$

调用最后一条命令历史中的参数

实践操作:

五、四则运算

算术运算:默认情况下,shell就只能支持简单的整数运算。

运算内容:加(+)、减(-)、乘(*)、除(/)、求模(余数)(%)。

1、四则运算符号

表达式

实例

$(())

echo $((1+1))

$[]

echo $[10-5]

expr

expr 10/5 注意点:乘法时,要使用转义符(\)即,expr 10*5

let

n=1;let n+=1 等价于 let n=n+1

实例练习:

2、i++和++i

表达式

对变量的影响

对表达式的影响

i++

先赋值,再运算

++i

先运算,再赋值

实例练习:

文章如有错误

请大家给予多多指教

非常感谢

95年金牛座的程序员 感谢你的关注

公众号:平头哥Geek

linux写程序四则运算,Shell编程之变量及四则运算相关推荐

  1. linux利用位置参数数组,Shell编程1_变量、参数和数组

    目录 一.从变量开始 1.环境变量 export命令 2.系统自带的环境变量 3.变量的定义和赋值 二.使用参数 参数的获取 三.数组的基本使用 1.数组的定义 2.数组的删除 3.数组的切片和替换 ...

  2. linux系统——Shell编程之变量解释

    linux系统--Shell编程之变量解释 - Shell能做什么 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略-) 自动化批量软件部署程序 (LAMP,LNMP,Tomca ...

  3. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  4. (二)shell编程之变量定义与使用

    shell编程之变量定义与使用 SHELL编程模块课程目标 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达 ...

  5. Linux高级命令和Shell编程

    1.Linux高级命令 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录. mkdir -p /export/data/shell/ 1.1.重定向命令 1.重定向& ...

  6. Linux知识点回顾之shell编程

    Linux知识点回顾之shell编程 shell编程 1 基本介绍 1.1 Shell 脚本 1.2 Shell 环境 1.3 第一个shell编程 1.4 运行 Shell 脚本有两种方法: 1.5 ...

  7. 12001.linux应用程序之i2c编程

    linux应用程序之I2C编程 1 内核中关于I2C介绍 1.1 如何实例化一个I2C设备 1.2 实现一个I2C设备驱动 1.3 基本API函数 2 用户空间实现I2C编程 2.1 用户空间编程流程 ...

  8. 【Linux系统管理】10 Shell 编程进阶篇

    六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...

  9. SHELL编程之变量定义

    SHELL编程 学习前奏 1. 文件处理工具 1.1 grep工具 1.2 cut工具 1.3 sort工具 1.4 uniq工具 1.5 tee工具 1.6 paste工具 1.7 tr工具 小试牛 ...

最新文章

  1. Android SDK Manager 的介绍
  2. SAP复合角色更改后扩展到派生节点
  3. 解决import tensorflow时的报错 Passing (type, 1) or ‘1type‘ as a synonym of type is deprecate
  4. python默认参数举例_Python中的默认参数实例分析
  5. 深入浅出MongoDB(二)概述
  6. 判断对象属性值是否为空
  7. JAVA中的内部类(二)成员内部类
  8. php访问数据库例子,PHP访问MSSQL数据库(实例代码)
  9. 062 函数进阶小结
  10. Java图书管理系统总结
  11. J2EE是技术还是平台还是框架? 什么是J2EE
  12. hp linux还原系统还原,酷越一键备份还原(惠普电脑系统还原)精简美化版...
  13. Mac苹果电脑开不了机怎么办,该怎么修复
  14. windows添加右键点击打开CMD(运行)的方法
  15. 新人职场要淡定 情商比智商更重要
  16. XGBoost: A Scalable Tree Boosting System翻译
  17. hpuoj 1210: OY问题 [搜索]
  18. 计算机一级ms必考知识点,计算机一级MsOffice考试知识点整理重点.docx
  19. CTPN文本检测网络
  20. python爬取虎扑评论_python爬取网站数据

热门文章

  1. C++ nlohmann/json 的主要用法
  2. 图像处理中的dpi(Dots Per Inch)是什么单位?(图像每英寸长度内的像素点数)
  3. python PyQt5 QLabel()(可以用来显示文字、图片或作为放置一些控件提示信息的容器)
  4. python 内置函数 sum()函数 求和函数
  5. MobileNet V2 复现
  6. 运行launch文件报错Roslaunch got a ‘No such file or directory‘ error while attempting to run:
  7. oracle 查询表字段6,Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、...
  8. Linux中top命令使用
  9. Springboot 集成Springcloud gateway的入门
  10. 计算机与人脑_看!自行车成精了...清华网红自行车:拥有“类人脑芯片”,可无人驾驶...