下面围绕“判断字符串是否以.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)