一、Shell 脚本入门
1、脚本格式
脚本以 #!/bin/bash 开头(以#! 开头,/bin/bash指定解析器)
2、HelloWord实例
创建文件夹datas和文件helloworld.sh,并编辑
在文件中输入以下内容:
执行脚本:
1)第一种:采用bash或sh +脚本的相对路径或绝对路径(不用赋予脚本+x权限)
2)采用输入脚本的相对路径或绝对路径执行脚本(必须具有可执行的+x权限)
注意:第一种方法本质上是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种方法,本质上是脚本需要自己执行,所以需要执行权限。
3、第二个Shell脚本:多命令处理
添加如下内容,在/asus/home/目录下新建文件然后写入内容
执行脚本
二、Shell中的变量
1、系统变量
常用的系统变量有
$HOME(家目录)、$PWD(当前目录)、$SHELL(解析器)、$USER(当前用户)等
2、自定义变量
1)、基本语法
① 定义变量:变量=值
② 撤销变量:unset 变量
③ 声明静态变量:readonly 变量,注意:不能unset
2)、定义变量规则
① 变量名称可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写。
② 等号两侧不能有空格
③ 在bash中,变量的默认类型都是字符串类型,无法直接进行数值运算。
④ 变量的值如果有空格,需要使用双引号或者单引号括起来。
3)、实例:
静态变量不能unset
在bash中,变量的默认类型都是字符串类型,无法直接进行数值运算
如果变量的值有空格,需要使用双引号或单引号括起来
4)、将变量提升为全局环境变量,可以供其他Shell程序使用
export 变量名
在helloworld.sh中加入如下内容:
运行发现并没有打印 $B 对应的值
3、特殊变量
1)
$n:n为数字,$0代表该脚本名称,$1~$9代表第一个到第九个参数,十以上的参数需要用大括号包含,如${10}
实例:
一共四个参数
运行:
2)
$#:获取所有输入参数的个数,常用于循环
实例:添加 echo $#
运行:
3)
$*:这个变量代表命令行中的所有参数,$*把所有参数看成一个整体
$@:这个变量代表命令行中的所有参数,不过$@把每个参数区分对待
实例:
执行:
4)
$?:最后一次执行的命令返回的状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数由命令自己决定),则证明上一个命令执行不正确了。
实例:
判断helloworld.sh是否正确执行
三、运算符
1、语法
① $((运算式)) 或 $[运算式]
② expr +,-,\*,/,% 加,减,乘,除,取余
注意:expr运算符间要有空格
2、实例
1)3+2
2)(2+3)*4
采用expr一步完成计算
采用 $[运算式] 方式
四、条件判断
1、语法
[ condition ] (注意condition前后要有空格)
注意:条件非空即为true,[asus]返回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 文件存在(executence) -d 文件存在并是一个目录(directory)
3、实例
1)23是否大于等于22
2)helloworld.sh是否具有写的权限
3)home/asus/good.txt目录中的文件是否存在
4)多条件判断(&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令)