Shell脚本

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)

 


版权声明:本文为weixin_59868842原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。