【第三章】Vim编辑器与Shell脚本命令

Vim编辑器三种模式转换
a: 切换到光标下一位输入
i: 切换到光标当前位
o: 切换到光标下一行输入

命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

输入模式:正常的文本录入。

末行模式:保存或退出文档,以及设置编辑环境。

例:[root@dq]# vim 文件名.sh         创建一个脚本文件

命令模式下参数作用

参数 作用
YY 复制光标所在行
DD 删除光标所在行
5DD 删除光标所在行的5行
P 粘贴
U 撤销操作

:wq!(强制保存并退出)
在这里插入图片描述

带参数的脚本
"$0"    脚本名称
"$1"    第一个参数
"$#"    参数个数
"$*"    所有的参数
"$?"    判断上一条命令是否执行成功   0---成功    非0----不成功
&&    若前面命令执行成功,则执行后面
||       若前面命令执行失败,则执行后面
!     取反

例 [ $USER = root ] && echo “ADMIN” || echo “USER”


**编写一个简单的脚本!!!**
[root@linuxprobe ~]# vim example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"
[root@linuxprobe ~]# sh example.sh one two three four five six
当前脚本名称为example.sh
总共有6个参数,分别是one two three four five six。
第1个参数为one,第5个为five。

判断用户输入的参数及条件表达式
在这里插入图片描述
按照测试对象来划分,条件测试语句可以分为4种:

文件测试语句;

逻辑测试语句;

整数值比较语句;

字符串比较语句。

文件测试所用的参数

操作符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

整数比较参数

参数 含义
-eq 是否=
-ne 是否!=
-gt 是否>
-lt 是否<
-le 是否<=
-ge 是否>=
例 [root@dq]# [ 10 -gt 10 ]
     [root@dq]# echo $?
     1

判断变量是否已被使用
[ -z $变量名 ]
echo ¥?
0—没有使用
1—已使用
流程控制语句
1、if条件控制语句

if [ 条件测试语句 ]
	then 
		命令
fi
[root@dq]# 		#!/bin/bash
                      if [ ! -e /media/haha ]
                      then
                      mkdir -p /media/haha
                      fi
                      //判断目录是否存在,不存在就创建目录

for case使用举例来说明

#!/bin/bash
#ping3次 间隔0.2秒 最大响应时间3秒
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null             //输出过程到黑洞文件中
if [ $? -eq 0 ]; then    //如果上次命令执行成功,显示主机在线
echo "$1 is online"
else                          //否则显示离线
echo "$1 is offline"
fi

判断成绩脚本

#!/bin/bash
read -p "Enter:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ];then
echo "$GRADE is Pass"
else
echo "$GRADE is Fail"
fi

批量生成用户脚本

#!/bin/bash
read -p "Enter a passwd:" PASSWD
for UNAME in `cat user.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ];then
echo "Already Exists"
else
useradd $UNAME &>/dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ];then
echo "$UNAME,Create Success"
else
echo "$UNAME.Create Failure"
fi
fi
done

一个小游戏

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
while true
do
read -p "Enter:" INT
let TIMES++
if [ $INT -eq $PRICE ];then
echo “Good”
echo "$TIMES"
exit 0
elif [ $INT -gt $PRICE ];then
echo "High"
else
echo "Low"
fi
done

case使用举例脚本

#!/bin/bash
read -p "Enter:" Key
case "$Key" in
[a-z]|[A-Z])
echo "字母"
;;
[0-9])
echo "数字"
;;
*)
echo "Error"
esac

计划任务
1、单次计划任务

at 时间
命令
(完成后按ctrl+D)

2、删除计划任务

at-l    (查看计划任务)
atrm 序号

3、多次计划任务
crond为服务名称
crontab为配置工具

crontab -e      //打开计划任务
规则
分	时	日	月	星期	命令
30	*	*	*	*		ls -l
//每30分钟执行一次 ls -l命令

本章总结:
1.Vim编辑器的三种模式分别是什么?

答:命令模式、末行模式与输入模式(也叫编辑模式或插入模式)。

2.怎么从输入模式切换到末行模式?

答:需要先敲击Esc键退回到命令模式,然后敲击冒号(:)键后进入末行模式。

3.一个完整的Shell脚本应该哪些内容?

答:应该包括脚本声明、注释信息和可执行语句(即命令)。

4.分别解释Shell脚本中$0与$3变量的作用。

答:在Shell脚本中,$0代表脚本文件的名称,$3则代表该脚本在执行时接收的第三个参数。

5.if条件测试语句有几种结构,最灵活且最复杂的是哪种结构?

答:if条件测试语句包括单分支、双分支与多分支等三种结构,其中多分支结构是最灵活且最复杂的结构,其结构形式为if…then…elif…then…else…fi。

6.for条件循环语句的循环结构是什么样子的?

答:for条件循环语句的结构为“for 变量名 in 取值列表 do 命令序列 done”,如图4-20所示。

7.若在while条件循环语句中使用true作为循环条件,那么会发生什么事情?

答:因条件测试值永久为true,因此脚本中循环部分会无限地重复执行下去,直到碰到exit命令才会结束。

8.如果需要依据用户的输入参数执行不同的操作,最方便的条件测试语句是什么?

答:case条件语句。

9.Linux系统的长期计划任务所使用的服务是什么,其参数格式是什么?

答:长期计划任务需要使用crond服务程序,参数格式是“分、时、日、月、星期 命令”。

猜你喜欢

转载自blog.csdn.net/u014797713/article/details/106326007
今日推荐