下面围绕“判断字符串是否以.txt结尾”展开。转变一下也同样适用于“判断字符串是否以.txt开头”。
通用方法
方法一、使用grep命令
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命令
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指令
str="/path/to/foo.txt" case "$str" in *.txt ) echo "true";; * ) echo "false";; esac
其他方法
还可以使用 AWK、SED 命令,这里就不再介绍了,方法和上面是类似的。
特定方法
BASH
# BASH中的正则表达式 [[ "/path/to/foo.txt" =~ .*txt$ ]] && echo "true" || echo "false" # BASH的特殊语法 [[ "/path/to/foo.txt" = *txt ]] && echo "true" || echo "false"
参考文献
How do I do if(string.endsWith(“/”)) in shell
Bash String Comparison: Find Out IF a Variable Contains a Substring