文章目录
一、shell概述
Shell 是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令。
二、脚本执行方式
1、方式一:赋予执行权限
chmod 755 文件名 # 给当前文件执行权限
./文件名 # 赋予755权限之后,./可执行脚本
2、方式二:通过bash调用执行脚本
bash 文件名
三、常用命令
一、输出命令
1、echo
echo [选项] [输出内容]
选项
-e: 支持反斜线控制的字符转换
echo 后加双引号,即可在控制台输出要打印的内容
2、print:在每个输出之后自动加入一个换行符(Linux默认没有print命令)
3、printf:标准输出命令,并不会自动加入换行符,如果需要换行,需要手动增加\n。
printf '输出类型输出格式' 输出内容
输出类型
:
%ns: 输出字符串。n是数字,指输出几个字符
%ni: 输出整数。n是数字指代输出几个数字
%m.nf:输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2代表共输出8位数
示例:
[root@rainbow ylxtest]# printf '%s %s %s %s\n' 1 2 3 4 5 6 7 8 9 10
1 2 3 4
5 6 7 8
9 10
二、shell 脚本加颜色
30m:黑色; 31m:红色; 32m:绿色; 33m:黄色;
34m:蓝色; 35m:洋红; 36m:青色; 37m:白色;
格式:echo -e “\e[1;31m 要标红的内容 \e[0m”
eg:
echo -e “\e[1;31m POC目前建议仅对单产品部署(最低配置8C32G),组合产品资源情况需再评估!!! \e[0m”
命令汇总
序号 | 控制字符 | 作用 |
---|---|---|
1 | \ | 输出\本身 |
2 | \a | 输出警号音 |
3 | \b | 退格键,也就是向左删除键 |
4 | \c | 取消输出行末的换行符。和“-n”选项一致 |
5 | \e | ESCAPE键 |
6 | \f | 换页符 |
7 | \n | 换行符 |
8 | \r | 回车键 |
9 | \t | 制表符,也就是Tab键 |
10 | \v | 垂直制表符 |
11 | \0nnn | 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
12 | xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
13 | w | 显示当前用户登录信息以及过去1、5、15分钟的负载 |
14 | $0 | Shell的命令本身 |
15 | $0~$9 | 表示Shell的第几个参数 |
16 | $? | 显示最后命令的执行情况 |
17 | $# | 传递到脚本的参数个数 |
18 | $$ | 脚本运行的当前进程ID号 |
19 | $* | 以一个单字符串显示所有向脚本传递的参数 |
20 | $! | 后台运行的最后一个进程ID号 |
21 | $- | 显示Shell使用的当前选项 |
四、条件判断
1、按照文件类型进行判断
测试选项 | 作用 |
---|---|
-d 文件 | 判断该文件是否存在,并且是否为目录文件(是目录为真) |
-e 文件 | 判断该文件是否存在(存在为真) |
-f 文件 | 判断该文件是否存在,并且是否为普通文件(是普通文件为真) |
-b 文件 | 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) |
-c 文件 | 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) |
-L 文件 | 判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真) |
-p 文件 | 判断该文件是否存在,并且是否为管道文件(是管道文件为真) |
-s 文件 | 判断该文件是否存在,并且是否为非空(非空为真) |
-S 文件 | 判断该文件是否存在,并且是否为套接字文件(是套接字文件为真) |
- 两种判断格式
(1)test -e 文件名
(2)[ -e 文件名 ] # 注意:中括号前后一定要各添加一个空格
echo $? #0:返回结果为真 1:返回结果为假
简化上面两行命令:
test -e /root && echo "yes" || echo "no"
实例1:文件夹不存在则创建
if [ ! -d "/data/test"];then
mkdir -p /data/test # -p 递归创建多个文件
else
echo "文件夹已存在,执行其他的操作"
fi
2、两个文件之间进行比较
测试选项 | 作用 |
---|---|
文件1 -nt 文件2 | 判断文件1的修改时间是否比文件2的新(如果新则为真) |
文件1 -ot 文件2 | 判断文件1的修改时间是否比文件2的旧(如果旧则为真) |
文件1 -ef 文件2 | 判断文件1是否和文件2的Inode号(-i)一致,可以理解为两个文件是否为同一个文件。常用场景:判断硬链接 |
3、两个整数之间比较
测试选项 | 作用 |
---|---|
整数1 -eq 整数2 | 判断整数1是否和整数2相等(相等为真) |
整数1 -ne 整数2 | 判断整数1是否和整数2 不相等(不相等为真) |
整数1 -gt 整数2 | 判断整数1是否大于整数2(大于为真) |
整数1 -lt 整数2 | 判断整数1是否小于整数2(小于为真) |
整数1 -ge 整数2 | 判断整数1是否大于等于整数2(大于等于为真) |
整数1 -le 整数2 | 判断整数1是否小于等于整数2(小于等于为真) |
4、字符串的判断
测试选项 | 作用 |
---|---|
-z | 判断字串是否为空(为空返回真) |
-n | 判断字串是否为非空(非空返回真) |
字串1 == 字串2 | 判断字串1是否和字串2相等(相等返回真) |
字串1 != 字串2 | 判断字串1是否和字串2不相等(不相等返回真) |
5、多重条件判断
测试选项 | 作用 |
---|---|
判断1 -a 判断2 | 逻辑与,判断1和判断2都成立,最终的结果才为真 |
判断1 -o 判断2 | 逻辑或,判断1和判断2有一个成立,最终的结果就为真 |
! 判断 | 逻辑非,使原始的判断式取反 |