Linux:shell常用语句

exit、break、continue的区别:

exit:完全退出当前执行脚本循环语句(整体)
break:提前中断当前,不会影响循环以外的执行
continue:提前进入下一次循环,也不会影响循环以外的执行

[root@desktop mnt]# vim file.sh
[root@desktop mnt]# sh file.sh 
[root@desktop mnt]# sh file.sh exit
[root@desktop mnt]# sh file.sh break
[root@desktop mnt]# sh file.sh continue

编辑脚本内容
这里写图片描述
这里写图片描述

一·常用语句

1、for语句(循环定义变量,并依次执行)

for做的是批处理
for
do
done
seq与{ }区别:
seq:可设定步长
{ }:里面内容只能是数字,否则不执行

 [root@desktop mnt]# vim file.sh
[root@desktop mnt]# sh file.sh 

脚本内容
这里写图片描述这里写图片描述

[root@desktop mnt]# vim file.sh
[root@desktop mnt]# sh file.sh 

脚本内容
这里写图片描述这里写图片描述

[root@desktop mnt]# vim file.sh
[root@desktop mnt]# sh file.sh 

脚本内容
这里写图片描述这里写图片描述

实验一:备份数据库,并且保存到/mnt/mysql_backup

[root@localhost mnt]# yum install mariadb-server -y    ##安装数据库
[root@localhost mnt]# systemctl start mariadb     ##打开服务器
[root@localhost mnt]# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.35-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database linux;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use linux;
Database changed
MariaDB [linux]> create table linux_user(
    -> username varchar(50) not null,
    -> 
    -> password varchar(50) not null);
Query OK, 0 rows affected (0.17 sec)

MariaDB [linux]> insert into linux_user values("user1","123");
Query OK, 1 row affected (0.05 sec)

MariaDB [linux]> insert into linux_user values("user2","234");
Query OK, 1 row affected (0.02 sec)

MariaDB [linux]> select * from linux_user;
+----------+----------+
| username | password |
+----------+----------+
| user1    | 123      |
| user2    | 234      |
+----------+----------+
2 rows in set (0.00 sec)

MariaDB [linux]> quit
Bye
[root@localhost mnt]# vim mysql_dump.sh     ##编辑脚本
[root@localhost mnt]# sh mysql_dump.sh   ##执行

编辑脚本内容
这里写图片描述
这里写图片描述
这里写图片描述

2、while语句

格式(当条件为真时执行do):
while true
do
done
实验二:实施监控/目录,/分区使用量超过80%需要报警

[root@localhost mnt]# df
/dev/vda1           10473900 3318476   7155424  32% /
[root@localhost mnt]# dd if=/dev/zero of=/bigfile bs=1M count=6000
[root@localhost mnt]# df
/dev/vda1           10473900 9462476   1011424  91% /
[root@localhost mnt]# vim checkload.sh
[root@localhost mnt]# sh checkload.sh &
[root@localhost mnt]# mail
[root@localhost mnt]# mail

编辑脚本内容
这里写图片描述
这里写图片描述
这里写图片描述

3、if语句

格式:
if
then
elif
then
else

[root@desktop ~]# cd /mnt/
[root@desktop mnt]# ll
[root@desktop mnt]# vim check_file.sh   ##编写脚本
[root@desktop mnt]# sh check_file.sh    ##调用(会提示)
Please input a file follow script !!
[root@desktop mnt]# sh check_file.sh /mnt/
/mnt/ is directory    ##是目录
[root@desktop mnt]# sh check_file.sh /dev/vdb1
/dev/vdb1 is block    ##是块设备

编辑脚本内容:
这里写图片描述
这里写图片描述

4、case语句(字符匹配,速度快)

与if在字符匹配不一样
case语句横向同时比较,效率优于if语句
格式:
case
word1)
action1
;;
word2)
action2
;;
….
action_last
esac

(1)输入 cat 显示 dog ;输入 dog 显示 cat

[root@desktop mnt]# vim dog_cat.sh    ##编辑脚本
[root@desktop mnt]# sh dog_cat.sh     
ERROR     ##提示
[root@desktop mnt]# sh dog_cat.sh cat
dog    ##调用成功
[root@desktop mnt]# sh dog_cat.sh dog
cat

编辑脚本内容:
这里写图片描述这里写图片描述

实验:智能建立用户

要求:
1.文件数量不对报错。
2.文件不存在报错。
3.文件行数差异报错。
4.用户存在显示用户存在,但是不改变用户密码。
5.当用户不存在建立用户并设定相应密码。
[root@desktop mnt]# cat userfile     ##添加用户
user1
[root@desktop mnt]# cat passfile     ##添加密码
uaer1123
[root@desktop mnt]# vim user_create.sh     ##编辑脚本
[root@desktop mnt]# sh user_create.sh userfile 
1.ERROR:Please input userfile and passfile follow scripts!!     ##提示
[root@desktop mnt]# sh user_create.sh userfile passF
3.ERROR:passF is not exist!!    ##提示
[root@desktop mnt]# sh user_create.sh userfile passfile    ##调用成功
user1 create
[root@desktop mnt]# id user1   ##查看用户

脚本内容:
这里写图片描述
这里写图片描述

5、expect语句

expect   是自动应答命令用于交互式命令的自动执行
spawn    是expect 中的监控程序,其运行后会监控命令提出的交互问题
send       发送问题答案给交互命令
"\r"       表示回车
exp_continue 表示当问题不存在时继续回答下面的问题
expect eof   表示问题回答完毕退出 expect 环境
interact     表示问题回答完毕留在交互界面
set NAME [ lindex $argv n ]    定义变量
[root@desktop mnt]# vim ask.sh     ##编辑shell脚本
[root@desktop mnt]# sh ask.sh      ##调用
What's your name: jiong
How old are you: 20
What study: linux
Are you happy: happy
jiong is 20 old study linux and feel happy !!
[root@desktop mnt]# yum install expect -y    ##安装(编写问题,脚本编写,自动回答脚本,幻术不一样)
[root@desktop mnt]# chmod +x /mnt/ask.sh     ##赋予权限
[root@desktop mnt]# chmod +x /mnt/ask.exp    ##赋予权限   
[root@desktop mnt]# vim ask.exp    ##编辑expect脚本
[root@desktop mnt]# expect /mnt/ask.exp jiong 20 linux happy    ##执行

shell脚本内容:
这里写图片描述
expect脚本内容:
这里写图片描述
这里写图片描述
这里写图片描述

如果在shell脚本中注释掉一个问题,再用expect执行:
这里写图片描述
这里写图片描述
当注释掉一个问题后,执行结果中会空出问题的答案

实验:自动ssh连接脚本

[root@desktop mnt]# vim ssh_auto.exp   ##编辑脚本
[root@desktop mnt]# expect /mnt/ssh_auto.exp 172.25.254.71 westos   ##执行

脚本内容:
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/le_anny/article/details/80766085
今日推荐