当前位置: 首页 > article >正文

shell编程4,shell脚本于用户交互+关系运算符

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

shell编程4,shell脚本于用户交互+关系运算符

shell脚本用与户交互,read命令

read [选项] [变量名...]

常用参数

  • -p "提示信息": 在读取之前显示一条提示信息,记得手动打印一个换行符,因为该选项会阻止自动换行
  • -t 秒数: 设置等待用户输入的时间限制(秒)。如果超时,则返回一个非零退出状态。
  • -s: 安静模式,输入的内容不会回显到终端上,适用于密码输入等敏感信息。
  • -n 字符数: 限制输入的最大字符数。
  • -d 分隔符: 指定结束输入的分隔符,默认为换行符。

可以利用read命令进行shell脚本于用户的交互
例如

read name

echo $echo

在这里插入图片描述

但是当我们使用-p参数的时候,会报错
在这里插入图片描述

原因很简单,kali中默认使用sh脚本解释器运行脚本,sh本质是指向dash解释器,而dash解释器其实是bash解释器的简化版,大小只有bash的十分之一左右,所以有很多命令参数解释并不支持

需要使用bash脚本

bash

read -p "请输入姓名:" name 

在这里插入图片描述

可以多个参数输入

read -p "请输入姓名和年龄:" name  age

echo $name $age

在这里插入图片描述

我们在看个例子,使用参数-t(指定时间)

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

# 如果我们在10秒内输入了就会执行成功,10秒内没有输入就会自动退出

在这里插入图片描述

可以使用-n参数,限制用户输入的字符个数,

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

输入三个字符自动执行,如果输入了三个以下的字符需要自己敲回车执行
在这里插入图片描述

关系运算符

在脚本环境中如何简单的做条件判断
运算符

  • -eq:检查两个数是否相等。
  • -lt:检查左边的数是否小于右边的数。
  • -gt:检查左边的数是否大于右边的数。
  • -ne:检查两个数是否不相等。
使用
vim o.sh

首先定义两个变量,然后通过if条件判断来进行两个简单的条件判断再接入关系运算符
内容为

num1=11
num2=22

if [ $num1 -eq $num2 ]; then
        echo "数字相等"
else 
        echo "数字不相等"
fi

在这里插入图片描述

更加复杂一些的

#!/bin/bash

# 定义两个变量
num1=10
num2=20

# 使用 if-then-else 语句进行条件判断
if [ $num1 -eq $num2 ]; then
    echo "num1 等于 num2"
elif [ $num1 -lt $num2 ]; then
    echo "num1 小于 num2"
elif [ $num1 -gt $num2 ]; then
    echo "num1 大于 num2"
else
    echo "num1 不等于 num2(虽然这个条件总是为真,但这里是为了展示 else 的用法)"
fi

# 另一个例子,使用更复杂的条件
if [ $num1 -ne $num2 ] && [ $num1 -lt 15 ]; then
    echo "num1 不等于 num2 并且 num1 小于 15"
else
    echo "num1 不满足上述条件"
fi

在这里插入图片描述

注意事项
  • [ ] 中使用空格是很重要的。例如,[ $num1 -eq $num2 ] 必须在每个元素之间加上空格。
  • 如果你想要对字符串进行比较,可以使用 == 或者 !=。但是请注意,这些操作符需要在 [[ ]] 中使用,而不是 [ ]。例如:
if [[ "hello" == "hello" ]]; then
    echo "字符串相等"
fi
test和[]

[ ]test 命令在 Bash 脚本中实际上是等价的。[ ]test 命令的一种更直观的写法。你可以用 test 来替换 [ ],但需要注意的是,使用 test 时不需要方括号,参数直接传递给 test 命令。
简单的用法
在这里插入图片描述

复杂一些的

#!/bin/bash

# 定义两个变量
num1=10
num2=20

# 使用 test 命令进行条件判断
if test $num1 -eq $num2; then
    echo "num1 等于 num2"
elif test $num1 -lt $num2; then
    echo "num1 小于 num2"
elif test $num1 -gt $num2; then
    echo "num1 大于 num2"
else
    echo "num1 不等于 num2(虽然这个条件总是为真,但这里是为了展示 else 的用法)"
fi

# 另一个例子,使用更复杂的条件
if test $num1 -ne $num2 && test $num1 -lt 15; then
    echo "num1 不等于 num2 并且 num1 小于 15"
else
    echo "num1 不满足上述条件"
fi

在这里插入图片描述


http://www.kler.cn/a/412382.html

相关文章:

  • element ui select绑定的值是对象的属性时,显示异常.
  • 跨标签通信的几种方式
  • Apache OFBiz xmlrpc XXE漏洞(CVE-2018-8033)
  • 如何编写一个 Vue 3 应用:模板插值示例
  • day11_JS初识_语法
  • git(Linux)
  • C#基础题总结
  • 【大数据学习 | Spark-SQL】SparkSQL读写数据
  • STM32 使用ARM Compiler V6 编译裸机 LWIP协议栈报错的解决方法
  • 【pyspark学习从入门到精通21】机器学习库_4
  • 解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题
  • 项目学习:仿b站的视频网站项目03-注册功能
  • 沃丰科技出海客服系统:打造全球化客户服务新标杆
  • 日志打印规范
  • AVL、B树和B+树
  • 学习笔记039——SpringBoot整合Redis
  • width设置100vh但出现横向滚动条的问题
  • 速度革命:esbuild如何改变前端构建游戏 (1)
  • 多模态大模型打造沉浸式社交体验,Soul App创始人张璐团队海外首秀GITEX GLOBAL
  • 使用OpenCV实现图像拼接
  • 【C++第三方库】Muduo库结合ProtoBuf库搭建服务端和客户端的过程和源码
  • 【JavaEE初阶 — 网络编程】Socket 套接字 & UDP数据报套接字编程
  • Linux 虚拟机下安装RedisJSON
  • 【Pytorch框架】无中生有,从0到1使用Dataset类处理MNIST数据集
  • 多线程1:基础概念、接口介绍、锁
  • 通俗理解人工智能、机器学习和深度学习的关系