linux shell 比较字符串,关于Linux Shell脚本:Linux Shell脚本 – 字符串与通配符的比较...

我正在尝试查看一个字符串是否是shell脚本中另一个字符串的一部分()!BI/SH)。

我现在的代码是:

#!/bin/sh

#Test scriptje to test string comparison!

testFoo () {

t1=$1

t2=$2

echo"t1: $t1 t2: $t2"

if [ $t1 =="*$t2*" ]; then

echo"$t1 and $t2 are equal"

fi

}

testFoo"bla1""bla"

我要寻找的结果是,我想知道"bla1"中何时存在"bla"。

谢谢,谨致问候,

更新:我尝试了这里描述的"contains"函数:如何在UnixShell脚本中判断一个字符串是否包含另一个字符串?

以及bash中字符串包含的语法

但是,它们似乎与普通shell脚本(bin/sh)不兼容…

帮助?

检查stackoverflow.com/questions/229551/string-contains-in-bash

同样的问题和答案在这里:stackoverflow.com/questions/229551/string-contains-in-bash stackoverflow.com/questions/2829613/…

在bash中,您可以编写(注意星号在引号之外)

if [[ $t1 == *"$t2"* ]]; then

echo"$t1 and $t2 are equal"

fi

对于/bin/sh,=运算符仅用于相等,不用于模式匹配。不过,您可以使用EDOCX1[1]

case"$t1" in

*"$t2"*) echo t1 contains t2 ;;

*) echo t1 does not contain t2 ;;

esac

如果您专门针对Linux,那么我假设存在/bin/bash。

谢谢一群格伦!非常感谢!(这是一个Linux环境,但是非常轻量,没有/bin/bash,所以我真的需要那个/bin/sh版本!-再次感谢!)

+一提起案件。

比处理案例更好,使用=~operator:if[[$T1=~%T2*];echo匹配;fi

@lef,对于正则表达式,需要[[ $t1 =~"$t2" ]]。

@格伦,对了,除了错别字(%t2而不是$t2),sh实际上可能不支持双括号[]

天哪,这太违反直觉了!谢谢,现在一切都有意义了。

@亚历克斯对巴什没有什么直觉

@感谢你,我只是在学习,我犯了和这个问题的作者完全一样的错误,比如在语音标记之间加上通配符。

@格伦·杰克曼,嘿,巴德,你能帮我完成剧本吗?我很难得到*856*,因为*是通配符。这是我的剧本:findFile() { while read -r LINE; do printf"$LINE

"; grep -il '$LINE' *856*; done < /path/to/file.txt }

注意,顺序很重要:王牌需要放在比较的右边…至少从我的经验来看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值