shell编程(4)脚本与用户交互以及if条件判断 + shell编程(5)字符串运算符和逻辑运算符

声明!!!
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章
视频链接:泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负


# shell脚本如何与用户交互

read命令

read name age 指定变量信息 susu 23
echo $name #接收用户输入
echo $age #接收用户输入

在这里插入图片描述

-p参数(提示用户输入)

只能在bash环境中使用

bash #进入bash环境
read -p "请输入您的姓名:" name

echo $name

在这里插入图片描述

-t参数(指定自动退出时间)

如果用户在指定时间内未输入,则会自动退出。

read -t 10 -p "请输入您的姓名:" name

这里不做演示。

-n参数(限制用户输入字符个数)

如果超出限制个数,则会自动退出

read -n 3 -t 10 -p "请输入您的姓名:" name

演示脚本

vim 1.sh

#写入如下脚本
read -p "请输入您的姓名:" name
echo "您输入的您输入的姓名是:$name,请您确认!"

#运行脚本
sh 1.sh

在这里插入图片描述

关系运算符

只能对数值进行判断,无法对这个字符串进行判断

-eq (相等)
-lt(小于)
-gt(大于)
-ne(不等于)
else (反转)

脚本

num1=78
num2=89
if [ $num1 -eq $num2 ]; then
    echo 相等
else
    echo 不相等
fi

代码解释:

num1=78

这一行定义了变量 num1,并给它赋值 78

num2=89

这一行定义了另一个变量 num2,并给它赋值 89

if [ $num1 -eq $num2 ]; then
  • 这是一个条件语句 if,用于检查 num1num2 是否相等。
  • [ $num1 -eq $num2 ] 是一个条件表达式,用于判断两个变量的值是否相等。-eq 是数字比较操作符,表示 “等于”。
  • $num1$num2 是变量的值,在这个例子中分别是 7889
  • 因为 78 不等于 89,所以条件表达式的结果是 false
echo 相等
  • 如果条件为 true(即 num1num2 相等),那么会执行这行代码,打印 相等
  • 但是在这个例子中,因为 7889 不相等,echo 相等 不会被执行。
else
  • else 是条件语句的另一部分,表示当 if 条件为 false 时执行的代码块。
  • 因为 num1num2 不相等,所以会进入 else 分支。
 echo 不相等
  • 这行代码会在 num1num2 不相等时执行,打印 不相等
fi
  • fiif 语句的结束标志,表示条件语句的结尾。

在这里插入图片描述

其他可自行验证,修改掉运算符即可

[ ]可以用test来代替,例如

if [ $num1 -eq $num2 ]; then
if test $num1 -eq $num2 ; then

两个语句效果相同

字符串运算符

例子:

str1="hello"
str2="hello"

if [ "$str1" = "$str2" ]; then
  echo True
else
  echo false
fi

运行结果

在这里插入图片描述

-z参数(检查字符串长度是否为零)

脚本演示:

str1="hello"

if [ -z $str1 ]; then
  echo True
else
  echo false
fi

在这里插入图片描述

-n参数(检查字符串长度是否不为零)与-z相反

str1="hello"

if [ -n $str1 ]; then
  echo True
else
  echo false
fi

在这里插入图片描述

逻辑运算符之布尔运算符

示例脚本

num1=9
num2=19
if [ $num1 != 9 ]; then
 echo num1不等于9
else
 echo num1等于9
 fi
 

在这里插入图片描述

-a参数(与运算)

连接两个表达式,两个条件都要成立,才为真。和&&效果一样。

脚本

num1=9
num2=19

if [ $num1 != 9 -a $num2 -lt 20 ]; then
 echo True
else
 echo False
fi

在这里插入图片描述

-o参数(或运算)

连接两个表达式,只有在 至少一个条件为真 时,整个表达式才会为真。和**||**效果一样。

num1=9
num2=19

if [ $num1 != 9 -o $num2 -lt 20 ]; then
 echo True
else
 echo False
fi

num1=9
num2=19

if [ $num1 != 9 -o $num2 -lt 20 ]; then
echo True
else
echo False
fi


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fbf7c609e61a48f68d26c15e4de4c681.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值