一、Shell脚本的概述
1.1 Shell的作用
1.1.1 Shell脚本的概念
● 将要执行的命令按顺序保存到一个文本文件
● 给该文件可执行权限
● 可结合各种Shell控制语句以完成更复杂的操作
1.1.2 Shell脚本应用场景
● 重复性操作
● 交互性任务
● 批量事务处理
● 服务运行状态监控
● 定时任务执行
● ......
1.1.3 Shell的作用
■Shell的作用——命令解释器,翻译官
●介于系统内核与用户之间,负责解释命令行
■用户的登录Shell
●登录后默认使用的Shell程序,一般为/bin/bash
●不同的Shell的内部指令、运行环境等会有所区别
1.2 Shell编程规范
1.2.1 编写第一个Shell脚本
■编写脚本代码
●使用vim文本编辑器
●每行一条Linux命令,按执行顺序依次编写
■赋予可执行权限
●使脚本具有可执行属性
chmod +x first.sh
■执行脚本文件
●脚本文件路径(绝对路径与相对路径)
./first.sh
●sh 脚本文件路径
sh first.sh
●source 脚本文件路径
source first.sh
■更完善的脚本构成
●脚本声明
●注释信息
●可执行语句
[root@localhost ~]
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vmi开头的文件包括:"
ls -lh vml*
[root@localhost ~]
[root@localhost ~]
当前的目录位于:
/boot
其中以vmi开头的文件包括:
-rwxr-xr-x. 1 root root 6.4M Aug 8 21:27 vmlinuz-0-rescue-687e5a9e162e4e2da6800c175bc8a64e
-rwxr-xr-x. 1 root root 6.4M Nov 9 2018 vmlinuz-3.10.0-957.el7.x86_64
1.3 重定向与管道
1.3.1 重定向与管道操作
■交互式硬件设备
●标准输入:从该设备接收用户输入的数据
●标准输出:通过该设备向用户输出数据
●标准错误:通过该设备报告执行出错信息
■重定向操作
■管道操作符号“|”
●将左侧的命令输出结果,作为右侧命令的处理对象
[root@localhost ~]
root:x:0:0:root:/root:/bin/bash
tom:x:1000:1000:tom:/home/tom:/bin/bash
[root@localhost ~]
root /bin/bash
tom /bin/bash
二、Shell脚本变量
2.1 自定义变量
2.1.1 Shell变量的作用、类型
■变量的作用
●用来存放系统和用户需要使用的特定参数(值)
◆变量名:使用固定的名称,由系统预设或用户自定义
◆变量值:能够根据用户设置、系统环境的变化而变化
■变量的类型
●自定义变量:由用户自己定义、修改和使用
●特殊变量:环境变量、只读变量、位置变量,预定义变量
■定义一个新的变量
●变量名以字母或下划线开头,区分大小写,建议全大写
■查看变量的值
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
Python
[root@localhost ~]
Python 2.7.13
■赋值时使用引号
●双引号:允许通过$符号引用其他变量值
●单引号:禁止引用其他变量值,$视为普通字符
●反撇号:命令替换,提取命令执行后的输出结果
■从键盘输入内容为变量赋值
[root@localhost opt~]
Python 2.7.13
[root@localhost opt~]
2.7.13
[root@localhost opt~]
[root@localhost opt~]
[root@localhost ~]
Python 2.7.13
■常用运算符
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c32b5f9ec86c4e42124beaa5dd936470.png)
2.2 特殊变量
■环境变量
●由系统提前创建,用来设置用户的工作环境
●配置文件:/etc/profile ~/.bash_profile
■常见的环境变量
●PWD、PATH
●USER、SHELL、HOME
■只读变量
●用于变量值不允许被修改的情况
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
cloud
[root@localhost ~]
bash: name: readonly variable
[root@localhost ~]
bash: unset: name: cannot unset: readonly variable
■位置变量
●表示为$n,n为1~9之间的数字
■预定义变量