01 shell编程之变量定义
一、SHELL介绍
㈠ 什么是shell脚本?
简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
㈡ 什么时候用到脚本?
重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。
㈢ shell脚本能干啥?
①自动化软件部署 LAMP/LNMP/Tomcat...
②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥...
③自动化分析处理 统计网站访问量
④自动化备份 数据库备份、日志转储...
⑤自动化监控脚本
㈣ 如何学习shell脚本?
尽可能记忆更多的命令(记忆命令使用功能和场景)
掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本)
必须==熟悉掌握==脚本的基本语法(重点)
㈤ 学习shell脚本的秘诀
多看(看懂)——>模仿(多练)——>多思考(多写)
㈥ shell脚本的基本写法
- 脚本第一行
魔法字符==#!==指定解释器【必写】
#!/bin/bash 表示以下内容使用bash解释器解析
注意: 如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env 解释器 #!/bin/env bash
2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】
#!/bin/env bash
# 以下内容是对脚本的基本信息的描述
# Name: 名字
# Desc:描述describe
# Path:存放路径
# Usage:用法
# Update:更新时间
#下面就是脚本的具体内容
commands
...
3)脚本第三部分,脚本要实现的具体代码内容
㈦ shell脚本的执行方法
1) 编写人生第一个shell脚本
[root@mpd]# cat first_shell.sh
#!/bin/env bash
# 以下内容是对脚本的基本信息的描述
# Name: first_shell.sh
# Desc: num1
# Path: /shell01/first_shell.sh
# Usage:/shell01/first_shell.sh
# Update:2019-05-05
echo "hello world"
echo "hello world"
echo "hello world"
2) 脚本增加可执行权限
[root@mpd]# chmod +x first_shell.sh
3) 标准方式执行脚本
[root@mpd]# pwd
/shell01
[root@mpd]# /shell01/first_shell.sh
或者
[root@mpd]# ./first_shell.sh
注意:标准执行方式脚本必须要有可执行权限。
1. 直接俄在命令行指定解释器执行
[root@mpd]# bash first_shell.sh
[root@mpd]# sh first_shell.sh
[root@mpd]# bash -x first_shell.sh
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
----------------
-x:一般用于排错,查看脚本的执行过程
-n:用来查看脚本的语法是否有问题
------------
2. 使用source命令读取脚本文件,执行文件里的代码
[root@mpd]# source first_shell.sh
hello world
hello world
hello world
二、变量的定义
- 变量是什么?
一句话概括:变量是用来临时保存数据的,该数据是可以变化的数据。
- 什么时候需要定义变量?
如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容。这样在修改内容的时候,仅仅需要修改变量的值。
在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。
- 变量如何定义?
*变量名=====变量值*
变量名:用来临时保存数据的
变量值:就是临时的可变化的数据
[root@mpd~]# A=hello 定义变量A
[root@mpd~]# echo $A 调用变量A,要给钱的,不是人民币是美元"$"
hello
[root@mpd~]# echo ${A} 还可以这样调用,不管你的姿势多优雅,总之要给钱
hello
[root@mpd~]# A=world 因为是变量所以可以变,移情别恋是常事
[root@mpd~]# echo $A 不管你是谁,只要调用就要给钱
world
[root@mpd~]# unset A 不跟你玩了,取消变量
[root@mpd~]# echo $A 从此,我单身了,你可以给我介绍任何人
- 变量的定义规则
虽然可以给变量(变量名)赋予任何值;但是,对于变量名也是要求的!