「Shell」- 判断字符串结尾 @20210209

下面围绕“判断字符串是否以.txt结尾”展开。转变一下也同样适用于“判断字符串是否以.txt开头”。

通用的方法

# 方法一、使用grep命令

#!/bin/sh

str="/path/to/foo.txt"

# 使用if语句
if echo "$str" | grep -q -E '\.txt$'
then
	echo "true"
else
	echo "false"
fi

# 写成一行
echo "$str" | grep -q -E '\.txt$' && echo true || echo false
grep -q -E '\.txt$' <<< "$str" && echo true || echo false

# 方法二、使用expr命令

#!/bin/sh

str="/path/to/foo.txt"

# 使用if语句
if expr "$str" : '.*\.txt$' &>/dev/null
then
	echo "true"
else
	echo "false"
fi

# 写成一行
expr "$str" : '.*\.txt$' &>/dev/null && echo true || echo false

# 方法三、使用case指令

#!/bin/sh

str="/path/to/foo.txt"

case "$str" in
	*.txt ) echo "true";;
	* ) echo "false";;
esac

# 其他方法

还可以使用AWK、SED,这里就不再介绍了,方法和上面是类似的。

特定于Shell的方法

BASH

#!/bin/bash

# BASH中的正则表达式
[[ "/path/to/foo.txt" =~ .*txt$ ]] && echo "true" || echo "false"

# BASH的特殊语法
[[ "/path/to/foo.txt" = *txt ]] && echo "true" || echo "false"

相关文章

「Sehll」- 重复字符串
「Shell」- 在脚本中,获取脚本所在路径

参考文献

How do I do if(string.endsWith("/")) in shell
Bash String Comparison: Find Out IF a Variable Contains a Substring

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值