shell编程之变量定义与使用

SHELL编程模块课程目标

  • ① Shell的基本语法结构

    如:变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等;

    ② 基本正则表达式的运用;

    ③ 文件处理三剑客:grep、sed、awk工具的使用;

    ④ 使用shell脚本完成一些较复杂的任务,如:服务搭建、批量处理等。

    说明:以上内容仅仅是基本要求,还有很多更深更难的语法需要扩充学习。

  • 本节目标

    • 熟练掌握shell变量的定义和获取(重点)
    • 能够进行shell简单的四则运算

一、SHELL介绍

前言:

计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的**编译器或者解释器**。

  1. 编程语言分类
  • 编译型语言:

​ 程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++

  • 解释型语言:

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

  • 总结

编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。

  1. shell简介
    shell位于内核和人机机交互之间 shell就是人机交互的一个桥梁
  • shell的种类
[root@huislee ~]# cat /etc/shells
/bin/sh             #是bash的一个快捷方式
/bin/bash           #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin       #表示非交互,不能登录操作系统
/bin/dash           #小巧,高效,功能相比少一些/bin/csh                #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh           #是csh的增强版,完全兼容csh

思考:终端和shell有什么关系?

终端就是一个shell解释器

  1. shell脚本

㈠ 什么是shell脚本?

  • 一句话概括

简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。

  • 准确叙述

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

㈡ 什么时候用到脚本?

重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。

㈢ shell脚本能干啥?

①自动化软件部署 LAMP/LNMP/Tomcat…

②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥…

③自动化分析处理 统计网站访问量

④自动化备份 数据库备份、日志转储…

⑤自动化监控脚本

㈣ 如何学习shell脚本?

  1. 尽可能记忆更多的命令(记忆命令使用功能和场景)
  2. 掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本)
  3. 必须==熟悉掌握==脚本的基本语法(重点)

㈤ 学习shell脚本的秘诀

多看(看懂)——>模仿(多练)——>多思考(多写)

㈥ shell脚本的基本写法

1)脚本第一行,魔法字符==#!==指定解释器【必写】

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

注意:
如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env 解释器

2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】

#!/bin/env bash# 以下内容是对脚本的基本信息的描述
# Name: 名字
# Desc:描述describe
# Path:存放路径
# Usage:用法
# Update:更新时间#下面就是脚本的具体内容
commands
...

3)脚本第三部分,脚本要实现的具体代码内容

㈦ shell脚本的执行方法

  • 标准脚本执行方法(建议)
1) 编写人生第一个shell脚本
[root@huislee shell01]# cat first_shell.sh
#!/bin/env bash# 以下内容是对脚本的基本信息的描述
# Name: first_shell.sh
# Desc: num1
# Path: /shell01/first_shell.sh
# Usage:/shell01/first_shell.sh
# Update:2020-10-05echo "hello world"
echo "hello world"
echo "hello world"2) 脚本增加可执行权限
[root@huislee shell01]# chmod +x first_shell.sh3) 标准方式执行脚本
[root@huislee shell01]# pwd
/shell01
[root@huislee shell01]# /shell01/first_shell.sh
或者
[root@huislee shell01]# ./first_shell.sh注意:标准执行方式脚本必须要有可执行权限。
  • 非标准的执行方法(不建议)
  1. 直接在命令行指定解释器执行
[root@huislee shell01]# bash first_shell.sh
[root@huislee shell01]# sh first_shell.sh
[root@huislee shell01]# bash -x first_shell.sh
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world-x:一般用于排错,查看脚本的执行过程
-n:用来查看脚本的语法是否有问题
  1. 使用source命令读取脚本文件,执行文件里的代码
[root@huislee shell01]# source first_shell.sh
hello world
hello world
hello world

**小试牛刀:**写一个木有灵魂的脚本,要求如下:

  1. 删除/tmp/目录下的所有文件

  2. 然后在/tmp目录里创建3个目录,分别是dir1~dir3

  3. 拷贝/etc/hosts文件到刚创建的dir1目录里

  4. 最后打印"报告首长,任务已于2019-05-05 10:10:10时间完成"内容

    echo "报告首长,任务已于$(date +'%F %T')"

rm -rf /home/huislee/test/dir/*
mkdir -p /home/huislee/test/dir/dir{1..3}
cp /etc/hosts /home/huislee/test/dir/dir1/
echo "任务完成时间为:$(date +"%F %T")"
root@huislee-Lenovo-G410:/home/huislee/test/sh# . ./first.sh
任务完成时间为:2020-11-0115:55:46

二、变量的定义

1. 变量是什么?

一句话概括:变量是用来临时保存数据的,该数据是可以变化的数据。

2. 什么时候需要定义变量?

  • 如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容。这样在修改内容的时候,仅仅需要修改变量的值。
  • 在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。

3.变量如何定义?

变量名=变量值

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

变量值:就是临时的可变化的数据

[root@huislee ~]# A=hello          定义变量A
[root@huislee ~]# echo $A          调用变量A,要给钱的,不是人民币是美元"$"
hello
[root@huislee ~]# echo ${A}        还可以这样调用,不管你的姿势多优雅,总之要给钱
hello
[root@huislee ~]# A=world         因为是变量所以可以变,移情别恋是常事
[root@huislee ~]# echo $A          不管你是谁,只要调用就要给钱
world
[root@huislee ~]# unset A          不跟你玩了,取消变量
[root@huislee ~]# echo $A          从此,我单身了,你可以给我介绍任何人

4. 变量的定义规则

虽然可以给变量(变量名)赋予任何值;但是,对于变量名也是要求的!

(二)shell编程之变量定义与使用相关推荐

  1. SHELL编程之变量定义

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

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

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

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

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

  4. Linux Shell常用技巧(十二) Shell编程

    二十三. Bash Shell编程:  1.  读取用户变量:     read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如 ...

  5. linux写程序四则运算,Shell编程之变量及四则运算

    Shell的学习目标 Shell的基本语法结构: 如:变量的定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等. 基本正则表达式的应用 文件处理:grep.sed.aw ...

  6. Shell编程之变量赋值和引用

    Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...

  7. Shell编程之变量

    一 Bash变量与变量分类 Bash是Linux中的标准Shell,因此经常称Bash为Shell. 1. 变量命名规则 变量名可以由字母.数字.下划线组成,但必须以字母与下划线开头: 变量名的长度不 ...

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

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

  9. 02_SHELL编程之变量定义

    目录 一.SHELL介绍 1. 编程语言分类 2. shell简介 3. shell脚本 ㈠ 什么是shell脚本? ㈡ 什么时候用到脚本? ㈢ shell脚本能干啥? ㈣ 如何学习shell脚本? ...

最新文章

  1. javascript 时钟代码 自动时间
  2. 戴尔服务器远程访问管理卡iDRAC 7详解
  3. 人工智能与大数据开发的12个注意事项
  4. 找工作,要工资高的,还是要自己喜欢的?
  5. Comcast以纯文本泄露客户Wi-Fi登录信息,立即更改密码
  6. js生成一周内的日期+周几
  7. jvm莫名退出问题解决
  8. Fluentd日志处理-tail拉取(三)
  9. 神经网络的双曲线正切激活函数
  10. 厚度仅2.5毫米,重60克,英伟达斯坦福做出了超轻薄VR眼镜
  11. Windows 安装Docker碰到 cannot enable hyper-v service
  12. 戏精程序员凌晨三点半发周报,真的很做作!
  13. 原生js获取document_常见的原生javascript DOM操作
  14. CAD版本转换知识大全
  15. 怎样在php中制作电子相册,免费电子相册制作软件 怎样把照片制作成电子相册并加背景音乐?...
  16. 算法分析之工作分配问题
  17. HyperWorks针对焊点信息丢失的处理办法
  18. 实现osgEarth三维仿真场景模型雾的效果的添加解决方法
  19. RFID服装店面管理系统
  20. 主图上视频全面开放,亚马逊试验新功能将让跟卖更加猖獗

热门文章

  1. Java中使用枚举类和switch实现映射存储的类似策略模式实现定制化流程
  2. 输入法没有消失导致点击事件失效
  3. HBuilder实现App资源在线升级更新
  4. 【科普】测绘行业比较厉害的轻量级无人机机载激光雷达
  5. 2028全球子宫肌瘤栓塞剂行业调研及趋势分析报告
  6. 信念就是一种观念对不对_有一种真香叫皇马的弃将!4场比赛不开张,大圣一开张就是绝杀_足球...
  7. 为奥运喝彩!百度智能云联合央视体育客户端打造奥运播报新体验!
  8. educoder实训——流程控制【1】
  9. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
  10. 我要搬家:男朋友出轨了,小三竟然是我闺蜜