亚游wwwag8com
你好,游客 登录 注册
背景:
阅读新闻

Bash Shell字符串比较入门

[日期:2019-05-14] 来源:Linux公社  作者:醉落红尘 [字体: ]

亚游wwwag8com,“这三名学生学习成绩都挺好,而且爱好广泛,我都很喜欢。”初次见面,吕老师这样评价三名涉事学生,“他们之间没有太大矛盾。”

该视频已在社交网络上经过800多次转发以及数百次点赞。事后,扮演伏地魔躲闪烟花攻击的少年还发表评论道:“我对自己的躲闪技巧深感自豪。”(实习编译:高睿 审稿:朱盈库)乐视网连续九跌停 自复牌市值蒸发375亿  这是为什么呢?中国有个说法叫“过错”,有很多事过了就错。中国和西方在这一点上的认识有所不同:西方是错就是错,对就是对;中国人则认为正确与否不在事情本身而在于节度,有些正确的事,若做过了,也就错了。所以中国人叫“记大过”,不叫“记大错”。会开车的人栽在高速路上,会游泳的人栽在水里,会讲演的栽在电视上,会打拳的栽在拳头上。谁见过盲人被车撞了的?实际上,真正有本事的人都很节制,轻易不出手,这样的人最后往往都很成功。由此也可以说,人的缺点就是优点的过度使用,而制节中的优点才是优点。我们常讲的谦虚使人进步,骄傲使人落后,是很有道理的。如从这个视角看,19世纪末日本当时的许多“优点”,若放到大历史中看却在后来变成了导致日本失败的缺点了。

在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串具有相同的长度并且包含相同的字符序列时,它们是相等的。

本教程描述了如何比较Bash中的字符串。

Bash Shell字符串比较入门

比较运算符

比较运算符是比较值并返回true或false的运算符。 在比较Bash中的字符串时,您可以使用以下运算符:

  • string1 = string2 和 string1 == string2 - 相等运算符,如果字符串相等,则返回true。
    • 将=运算符与test [命令一起使用。
    • 将==运算符与[[模式匹配命令]一起使用。
  • string1 != string2 - 不等式运算符,如果字符串不相等,则返回true。
  • string1 =~ regex - 正则表达式运算符,如果左边字符串数与右侧的扩展正则表达式匹配,则返回true。
  • string1 > string2 - 大于运算符,按字典顺序(字母顺序)排序,如果左边字符串大于右边字符串,则返回true。
  • string1 < string2 - 小于运算符,按字典顺序(字母顺序)排序,如果右边边字符串大于左边字符串,则返回true。
  • -z string - 如果字符串长度为零,则为True。
  • -n string - 如果字符串长度不为零,则为True。

以下是比较字符串时需要注意的几点:

  • 必须在二元运算符和操作数之间使用空格。
  • 始终在变量名称周围使用双引号以避免任何单词拆分或通配问题。
  • Bash不按“类型”隔离变量,变量根据上下文被视为整数或字符串。

检查两个字符串是否相等

在大多数情况下,在比较字符串时,您需要检查字符串是否相等。

以下脚本使用test [命令检查字符串是否与=运算符相等:

#!/bin/bash

VAR1="Linuxidc.com"
VAR2="Linuxidc.com"

if [ "$VAR1" = "$VAR2" ]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

执行脚本时,它将打印以下输出。

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
字符串是相等的。

如何比较Bash中的字符串

这是另一个脚本,它接受用户的输入并比较给定的字符串。 在这个例子中,我们将使用[[command and == operator]。

再输入字符串

请输入第一二个字符串

#!/bin/bash

read -p "请输入第一个字符串: " VAR1
read -p "请输入第二个字符串: " VAR2

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

运行脚本并在提示时输入字符串:

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
请输入第一个字符串: 亚游wwwag8com www.neurofeedbackconsult.com
请输入第二个字符串: linuxidc.com
字符串是不相等的。

如何比较Bash中的字符串

您还可以使用逻辑和&&和或|| 比较字符串:

[[ "string1" == "string2" ]] && echo "linuxidc.com" || echo "linuxidc"

linuxidc

如何比较Bash中的字符串

检查String是否包含子字符串

有多种方法可以检查字符串是否包含子字符串。

一种方法是使用星号符号*来环绕子串,这意味着匹配所有字符。

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR == *"Linux"* ]]; then
  echo "它在那里。"
fi

该脚本将回显以下内容:

它在那里。

如何比较Bash中的字符串

另一种选择是使用正则表达式运算符=?,如下所示:

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR =~ .*Linux.* ]]; then
  echo "它在那里。"
fi

后跟星号.*的句点匹配除了换行符之外的任何字符零次或多次出现。

检查String是否为空

通常,您还需要检查变量是否为空字符串。 您可以使用-n和-z运算符来完成此操作

#!/bin/bash

VAR=''
if [[ -z $VAR ]]; then
  echo "字符串为空。"
fi

输出:

字符串为空。

如何比较Bash中的字符串

#!/bin/bash

VAR=='linuxidc.com'
if [[ -n $VAR ]]; then
  echo "字符串不为空。"
fi

输出:

字符串不为空。

如何比较Bash中的字符串

使用ase操作符比较字符串

您也可以使用case语句来比较字符串,而不是使用测试运算符:

#!/bin/bash

VAR="Arch Linux"

case $VAR in

  "Arch Linux")
    echo -n -e "Linuxidc 匹配\n"
    ;;
  Fedora | CentOS)
    echo -n "Red Hat"
    ;;
esac

输出:

Linuxidc 匹配

如何比较Bash中的字符串

字典比较

词法比较是通过从左到右顺序比较字符串中的字符,按字母顺序比较两个字符串的操作。这种比较很少使用。

下面的脚本从词汇上比较了两个字符串:

#! /bin/bash
value1=linuxidc
value2=linuxidc.com
if [ $value1 \> $value2 ]
then
   echo "$value1 大于 $value2"
elif [ $value1 \< $value2 ]
then
   echo "$value1 小于 $value2"
else
   echo "$value1 等于 $value2"
fi

该脚本将输出以下内容:

linuxidc 小于 linuxidc.com

Bash Shell字符串比较入门

总结

比较字符串是Bash脚本中最基本和最常用的操作之一。 阅读本教程后,您应该很好地理解如何比较Bash中的字符串。

如果您有任何问题或反馈,请随时发表评论。

更多Linux命令相关信息见Linux命令大全 专题页面 /wwwd35clinuxidcd35ccom/topicnews.aspx?tid=16

Linux公社的RSS地址/wwwd35clinuxidcd35ccom/rssFeed.aspx

本文永久更新链接地址/wwwd35clinuxidcd35ccom/Linux/2019-05/158678.htm

linux
相关资讯       shell字符串  字符串比较 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
冰壶世锦赛中国男队负美国 七连败提前无缘六强 精神病女搭讪牵拉男童 警方责令该女家属严加看护 普京谈乌克兰剧变:明目张胆 俄罗斯被美国骗惨 观点:施蒂利克从现实到理想 他知道泰达还有潜力 ATP华盛顿赛下半区赛果:穆雷逆转晋级第二轮 第三方支付企业出海记:抢滩布局 竞争与挑战 周强:全国法院公开失信被执行人信息996.1万人次 2018五超联赛积分榜:大连4分领跑 新疆无奈垫底 抗美援朝纪念馆馆长杨光接受审查调查 俄军唯一航母接受全面改造 将于3年后重新服役 交易员持仓报告:反转频现 资金多陷“随波逐流” 老实小保姆突然被警察带走 她真实身份让众人惊呆
夫人儿子女婿均遭调查 韩媒:李明博3月或被传唤 港媒:美国政府仍有强烈动机阻止解放军武统台湾 传网鱼网咖欲赴港上市:获王思聪投资 明年3月提交IPO 狗年第一弹!大乐透头奖1注1000万 奖池49.4亿 韩媒渲染中国在黄海“越线”逾百次 专家回应 美军王牌师一架阿帕奇直升机坠毁:机内两飞行员遇难 精准打击“台独” 大陆从来不愁没牌可出 粤媒:塔利斯卡有种蛮不讲理的暴力 或成恒大核心 张常宁代表:寻体教结合新手段 为运动员退役护航 男子在免费停车场收费 交警:敢不敢露出你的马甲 16岁女孩生子 舅舅贴出“寻人启事”找孩子生父 小学生作文炸出韩寒工作室 10万网友喊佩服(图)
索萨:我们淘汰亚洲最强球队 还没有能力夺亚冠 别再轻易相信朋友圈 疯转的“科学网文”了 幸运之球!高拉特赛后收藏比赛用球 到哪都带着|图 环境部:水环境总体改善 年度水质目标完成压力大 美国运输安全管理局被曝多年来暗中监视航空乘客 特朗普计划对钢铝课重税 欧盟:以彼之道还施彼身 关于房子 这17个省份都下决心做同一件事情 自卫队日报隐瞒丑闻发酵 在野党反对防相赴美出差 一方赢恒大仍低调:还是保级队 舒斯特尔获盛赞 美联储开启鲍威尔时代 将支持经济增长和物价稳定 西媒推测:皇马球员状态不佳?为世界杯留力 印巴克什米尔交火致5死 其中有3名印度士兵和1军官 [新浪彩票]足彩18018期投注策略:沙尔克欧塞尔博胆 亚游wwwag8com