3.shell脚本入门
3.1脚本格式
脚本以#!/bin/bash开头(指定解析器)
3.2.第一个Shell脚本:helloworld
(1)需求:创建一个Shell脚本,输出helloworld
(2)案例实操:
1.创建一个Shell文本
vim HelloShell
2.使用bash解析器编写
3.使用命令执行shell脚本
4.使用./执行Shell脚本
4.1先给root用户添加执行权限
chmod u+x HelloShell.sh
4.2在执行./命令
./ HelloShell.sh
5.创建两个文本文档,放入一个文件夹中,使用Shell脚本将文件夹里的文本文档删除
5.1编写Shell脚本
使用vim创建de.sh
vim de.sh
编写脚本
#!/bin/bash
cd /root/delete/
rm 1.txt
rm 2.txt
echo "删除成功"
执行脚本
sh de.sh 或者bash de.sh
4.Shell中的变量
4.1. 常用系统变量
$HOME、$PWD、$SHELL、$USER等
4.2自定义变量
4.2.1.基本语法
(1)定义变量:变量=值
(2)撤销变量:unset 变量
(3)声明静态变量:readonly变量,注意:不能unset
4.2.2.变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2)等号两侧不能有空格
(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。
4.2.3单引号与双引号的区别(变量的值如果有空格,需要使用双引号或单引号括起来。)
单引号:变量值中包含特殊符号或者空格需要用单引号
双引号:变量值中包含空格需要用双引号(双引号中包含$会直接执行后面的自定义变量)
4.2.4全局变量
使用export +变量名将变量提升为全局变量
export a
在/root/b文件下创建一个var.sh脚本
执行脚本发现无法使用局部变量a
使用export a 提升为全局变量
5.运算符
5.1基本语法
(1)“$((运算式))”或“$[运算式]”
前面需要加变量,相当于给变量赋值
(2)expr + , - , \*, /, % 加,减,乘,除,取余
前面不能加变量,只能做计算
注意:expr运算符间要有空格
6.特殊变量(语法 echo $n)
6.1 $n
基本语法
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
6.2 $#
基本语法
$# (功能描述:获取所有输入参数个数,常用于循环)。
6.3 $*与$@
基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
6.4 $?
基本语法
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
6.5案例:
创建一个脚本
执行脚本
7.条件判断
1.基本语法
[ condition ](注意condition前后要有空格)
注意:条件非空即为true,[ root ]返回true,[] 返回false。
2. 常用判断条件
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并是一个目录(directory)