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

shell编程5,字符串运算符

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

shell5,字符串运算符

字符串运算符

[[ ... ]][...]

首先我们在终端利用vim打开u.sh
内容为:

str1="hello"
str2="hello"

if [[ "$str1" == "$str2" ]]; then
    echo True
else
    echo false
fi
  • 使用==来比较两个字符串是否相等。
  • 使用双方括号[[ ... ]]来进行字符串比较,它支持模式匹配和更复杂的表达式。
  • 变量应当用双引号包围,以确保即使变量值为空或包含空格时也能正确处理。
    在这里插入图片描述

提示[[: not found。这通常是因为shell环境不支持[[ ... ]]条件表达式,这可能是由于您使用的是一个较旧的或非常基础的shell版本,比如sh(Bourne shell),它不支持这种语法。
kail默认使用sh解释器,我们可以使用bash解释器,因为在kali中sh解释器的其实最终用的dash解释器,而dash解释器是bash解释器的简化版

在这里插入图片描述

当然了,我们如果要使用sh解释器,也可以使用旧的语法

str1="hello"
str2="hello"

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

注意以下几点:

  • 使用单个等号=
  • 确保在[]两边都有空格。
  • 变量仍然需要用双引号包围以确保安全处理。
    在这里插入图片描述

上面的两个例子中,双引号都是可以省略的,加上可以确保即使变量值为空或包含空格时也能正确处理
在这里插入图片描述

大小写是否敏感

我们可以更改str1为Hello,来看看效果

str1="Hello"
str2="hello"

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

在这里插入图片描述

我们使用!=在来看看他们是否不想等

str1="Hello"
str2="hello"

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

在这里插入图片描述

可以发现,对大小写敏感

检查字符串的长度是否为0、不为0

str1="hello"
str2="helllo"

# 检查str1的长度是否为0
if [ -z "$str1" ]; then
    echo True  # 如果str1长度为0,则输出True
else
    echo False  # 否则输出False
fi

在这里插入图片描述

  • 使用-z来检测字符串长度是否为零。
  • 变量名$str1应该被双引号包围以防止空值或包含空格的值导致的问题。
  • if[之间以及[和条件表达式之间需要有空格。
  • then关键字之前也需要有一个空格。

使用-n测试来检查字符串是否不为空。如果字符串不为空,则返回True;如果字符串为空,则返回False。我们将把str1改为str11并检查其长度。

# 定义变量
str11=""  # 这里设置为一个空字符串

# 检查str11的长度是否不为0
if [ -n "$str11" ]; then
    echo True  # 如果str11不为空,则输出True
else
    echo False  # 如果str11为空,则输出False
fi

在这里插入图片描述

逻辑运算符之布尔运算符

# 定义变量
num1=9

# 检查num1是否不等于9
if [ "$num1" != "9" ]; then
    echo "num1不等于9"
else
    echo "num1等于9"
fi

在这里插入图片描述

  • 使用单方括号[ ... ]来进行条件测试。
  • 使用!=来检查num1是否不等于9。
  • 变量num1被双引号包围以确保安全处理。
  • if语句的格式已经正确调整。
-a和-o 参数

-a来连接两个条件,相当于&&
-o来连接两个条件,相当于||

num1=9
num2=19

# 检查num1是否不等于9并且num2是否小于20
if [ "$num1" != "9" -a "$num2" -lt 20 ]; then
    echo True
else
    echo False
fi
  • 使用单方括号[ ... ]来进行条件测试。
  • 使用!=来检查num1是否不等于9。
  • 使用-lt来检查num2是否小于20。
  • 使用逻辑与运算符-a来连接两个条件。
  • 变量num1num2被双引号包围以确保安全处理。
    在这里插入图片描述

更改为-o

num1=9
num2=19

# 检查num1是否不等于9并且num2是否小于20
if [ "$num1" != "9" -o "$num2" -lt 20 ]; then
    echo True
else
    echo False
fi

在这里插入图片描述


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

相关文章:

  • Sofia-SIP 使用教程
  • 调试android P2P无法正常运行
  • Cesium着色器的创意和方法(六——透明和半透明)
  • linux线程资源回收
  • Lombok :简化 Java 编程的得力工具
  • Rust学习笔记_04——引用
  • 鸿蒙学习统一上架与多端分发-快速上架(1)
  • 交通流量预测:基于交通流量数据建立模型
  • 【后端面试总结】Redis持久化
  • 展示和添加篮球队信息--laravel与elementplus
  • Flutter:GetBuilder页面模板,可复用,视图,控制器分离
  • IntelliJ IDEA安装内网穿透实现远程连接家里或公司的MySQL数据库助力开发
  • 【C语言】结构体、联合体、枚举类型的字节大小详解
  • 累积局部效应 (ALE) 图分析记录
  • Unity中Http框架
  • 微知-arp如何删除所有表项?(arp -d; ip neighbor delete 192.168.0.100)
  • 力扣—912. 排序数组
  • queue 和 Stack
  • Unity shaderlab 实现LineSDF
  • 根据中缀二叉树构建中缀表达式