一.shell脚本概述
1.shell脚本的概念
1.1shell的概念
(1)将要执行的命令按顺序保存到一个文本文件
(2)给该文件可执行权限
(3)可结合各种Shell控制语句以完成更复杂的操作
1.2shell脚本的应用场景
(1)重复性操作
(2)交互性任务
(3)批量事务处理
(4)服务运行状态监控
(5)定时任务执行
2.shell的作用
2.1shell作用
相当于解释器,编辑器,与内核进行沟通或应用的程序,这个特殊的应用程序介于系统内核与用户之间,扮演命令解释器的角色,用户输入操作指令通过shell解释,传递给内核,内核执行完还要通过shell返回给用户一个执行结果。
2.2用户登录shell
(1)登录后默认使用的shell程序,一般为/bin/bash
(2)不同shell的内部指令、运行环境等都会有所区别
3.shell编程规范
3.1编写一个简单shell脚本
vim first.sh ——————————创建
3.2执行脚本文件
(1)脚本文件路径(绝对路径与相对路径)
格式:./+脚本名称
./first.sh——————必须要有读写执行权限
chmod 777 first.sh ——————赋予权限
(2)sh脚本文件路径
格式:sh+脚本名称
sh first.sh
(3)source脚本文件路径
格式:source+脚本名称
source first.sh
(4)bash脚本文件路径
格式:bash+脚本名称
bash first.sh
4.重定向与管道
4.1交互式硬件设备
(1)标准输入:从该设备接收用户输入的数据
(2)标准输出:通过该设备向用户输出数据
(3)标准错误:通过该设备报告执行出错信息
4.2重定向操作
4.2.1重定向输入(<)的用法
从指定的文件读取文件
4.2.2*重定向输出(>>>)*的用法
不删除源文件清空文件内容:cat /dev/null > passwd.txt
/dev/null相当于黑洞文件强制
4.2.3管道操作符号“|”的用法
将左侧的命令输出结果,作为右侧命令的处理对象,主要针对文本内容操作
格式:cmd1 | cmd2 […|cmdn]
例如:
二.shell脚本变量的作用
用来存放系统和用户需要使用的特定参数(值)
1.变量名
使用固定的名称,由系统预设或用户定义
1.1变量名的规范
(1)不要使用系统的命令作为变量名
(2)不要使用中文,可使用英文命名
(3)开头不要使用特殊的符号(#¥%*&)等
(4)可以使用_开头命名
(5)要有注释
2.变量的类型
(1)自定义变量
由用户自己定义,修改和使用
(2)特殊变量
环境变量、只读变量、位置变量、预定义变量
3.变量的范围
(1)整数(int)
(2)字符串:string
(3)布尔类型:真、假(0、1)
(4)浮点:不是整数(1.1 1.2)
4.自定义变量
4.1打印变量
格式:echo+变量名
用法:
4.2赋值时使用引导
(1)双引号
允许通过
符号引用其他变量值(
2
)单引号禁止引用其他变量值,
符号引用其他变量值 (2)单引号 禁止引用其他变量值,
符号引用其他变量值(2)单引号禁止引用其他变量值,视为普通字符
(3)反撇号
命令替换,提取命令执行后的输出结果
单双引号赋值无区别:
单双引号打印:
总:在赋值时,单双引号没有任何的区别,在打印时,双引号起的是弱引用,单引号起的是强调,因此打印的不再是原本变量值变成自己的字符串
4.3从键盘输入内容为变量赋值
格式:read -p "提示信息“+变量名
用法:
read -p "请输入一个数 : " num
echo $num
vim test.sh
vim test1.sh——————需要进入配置文件里修改不方便
4.4全局变量
特点:所有环境均可使用
优点:全局范围、持久、共享性
缺点:可变——如有多个相同的名会不确定赋值哪一个
格式:export 变量名或export 变量名=变量值
4.4.1临时定义全局变量
vim ex.sh
4.4.2永久定义全局变量
在配置文件里修改
vim /etc/profile
vim test.sh
4.4.3个人设置全局变量
在此配置文件下修改
vim /root/.bash_profile
vim test.sh
4.5整数变量的运算
4.5.1整数运算的格式类型
格式:
expr 变量1 运算符 变量2
类型:
4.5.2整数运算的用法
方法1:c=$(expr 5 % 2)
特殊乘法:
特殊取余数:
方法2:c=$[5%2]
方法3:let c=
a
∗
a*
a∗b
4.6特殊的形式
4.7bc计算机,支持整数和浮点数运算
格式:echo 数字 算法 数字 | bc
用法:
(1)整数
(2)小数
(3)可以内部自定义全局变量保留小数点几位
echo “scale=3;0.32*6.64” | bc
三.特殊的shell变量
1.环境变量
1.1环境变量的特点
由系统提前创建,用来设置用户的工作环境
1.2环境变量的配置文件
/etc/profile
~/.bash_profile
1.3环境变量的作用
系统自带,用于设置工作环境(配置系统行为,传递信息,控制程序的执行,这些变量所有用户都可以使用,都可见,可以直接被系统识别到。
1.4环境变量的写法
如:echo $USER、echo $HOME、echo $PWD
echo $ PATH
例:
[root@test1 ~]# PATH=“KaTeX parse error: Expected 'EOF', got '#' at position 27: … [root@test1 ~]#̲ export PATH="PATH:/root”
[root@test1 ~]# chmod 777 test.sh
2.只读变量
不可以被删除,重启即消失
命令:readonly+变量
3.位置变量
3.1位置变量的表示
表示为$n,n为1~9之间的数字
$0 是本身
10 以上的包括10用{10}表示
3.2位置变量的作用
运行脚本或程序时传递给他们的值,位置变量用于将外部数据 传给脚本执行
3.2位置变量的使用
4.预定义变量
4.1预定义变量概念
通常是由编辑程序语言或者脚本解释器提供的,根据需要自动设置和更新,不能修改
4.2预定义变量的类型
4.2.1$#
命令行中位置变量的个数
4.2.2 ∗ 和 *和 ∗和@
“$*”:把所有参数看成以空格分隔的一个字符串整体(单字符串)返回,代表"$1 $2 $3
4
"
。
"
4"。 "
4"。"@“:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表”$1" “$2” “$3” “$4”。
所有位置变量的内容
不加双引号
总:加双引号
∗
会把内容处理在一行加双引号
*会把内容处理在 一行 加双引号
∗会把内容处理在一行加双引号@会把内容分行处理
不加双引号
@
、
@、
@、*会把内容分行处理
4.2.3$?
表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。