LINUX学记笔记5

今日主要学习内容为如何编写shell脚本和流程控制语句
1、编写简单的脚本
shell脚本命令的工作方式有两种,分别是:交互式和批处理
交互式:与人进行交互输入操作的方式执行命令
批处理:输入命令后,不用人为进行操作一次性将命令执行得出结果
shell脚本主要分为三部分,分别是:脚本声明、脚本注释、脚本命令
脚本声明 #!/bin/bash
脚本注释 #需要说明的脚本内容及功能描述
脚本命令 脚本需要执行的命令

2、接收用户的参数
LINUX内设了用于接收用户输入的参数变量,变量之间使用空格间隔,具体变量信息如下:
$0 代表脚本名称
$# 代表共有多少个用户输入的参数
$* 代表都有哪些参数值
$1…N 代表第1或第N个数据的值
例:
#!/bin/bash
echo “当前脚本名称为 0 " e c h o " 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。

3、判断用户的参数
格式:[ 条件表达式 ] 《中括号内两边注意必须留有空隔》
按照判断对象来划分,条件判断语句可以分为4种:
文件判断语句;
逻辑判断语句;
整数值比较语句;
字符串比较语句。

变量$?作用:显示上一次命令的执行返回值 ,返回值为0时,代表上一次语句执行成功,若非0时,代表上一次语句执行为错误。

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

判断的“与”“或”“非”
&& 代表逻辑与或逻辑和,若前面的命令执行成功时,则执行‘&&’后面的语句
|| 代表逻辑或,若前面的命令执行失败,则执行‘||’后面的语句
! 代表逻辑非,取反值(取$?的反值)

整数比较运算符
操作符 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
演示:
[ free -m | grep Mem: | awk '{print $4}' -lt 1024 ] && echo “BUZU” || echo “congzu”

字符串比较运算符

操作符 作用
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空值
-z 可判断变量是否被使用,可用echo $?查看返回值确认

4、if条件判断语句
if语句分为:单分支、双分支和多分支三种类型
单分支语句格式:
if 条件
then
执行命令
fi

双分支语句格式:
if 条件
then
执行命令1
else
执行命令2
fi

多分支语句格式:
if 条件1
then
执行命令1
elif 条件2
执行命令2
elif 条件3
执行命令3
else
执行命令4
fi

例:
#!/bin/bash
read -p “Enter your score(0-100):” GRADE
if [ $GRADE -ge 85 ] && [ G R A D E l e 100 ] ; t h e n e c h o " GRADE -le 100 ] ; then echo " GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ G R A D E l e 84 ] ; t h e n e c h o " GRADE -le 84 ] ; then echo " GRADE is Pass"
else
echo “$GRADE is Fail”
fi
测试结果
[root@linuxprobe ~]# bash chkscore.sh
Enter your score(0-100):88
88 is Excellent
[root@linuxprobe ~]# bash chkscore.sh
Enter your score(0-100):80
80 is Pass

5、for条件循环语句
格式:
for 变量名 in 取值列表
do
执行命令
done
循环的次数是取决于取值列表的内容数量。
例:
创建用户名称文件
[root@linuxprobe ~]# vim users.txt
andy
barry
carl
duke
eric
george

批量创建用户shell脚本
#!/bin/bash
read -p “Enter The Users Password : " PASSWD
for UNAME in cat users.txt
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo “Already exists”
else
useradd KaTeX parse error: Expected 'EOF', got '&' at position 7: UNAME &̲> /dev/null ech…PASSWD” | passwd --stdin $UNAME &> /dev/null
if [ ? e q 0 ] t h e n e c h o " ? -eq 0 ] then echo " UNAME , Create success"
else
echo “$UNAME , Create failure”
fi
fi
done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了11 篇原创文章 · 获赞 0 · 访问量 104

猜你喜欢

转载自blog.csdn.net/qq_39764817/article/details/104450791