在Shell命令中,%.* 是一种字符串操作符,用于从变量值的末尾删除最短匹配的 . 及其后续字符,常用于处理文件路径或名称的后缀。以下是具体解析:
核心作用与语法
-
语法规则:
${变量名%.*}
该操作符会从变量值的最右侧开始匹配第一个.,并删除该.及其之后的所有字符 -
示例说明:
file="/data/user_example.csv" echo ${file%.*} # 输出:/data/user_example这里
.csv被删除,保留路径和主文件名部分。
对比其他操作符
-
%%与%的区别**:%是最短匹配,删除右侧第一个匹配的子字符串。%%是最长匹配,删除右侧最后一个匹配的子字符串。例如:file="archive.tar.gz" echo ${file%.*} # 输出:archive.tar echo ${file%%.*} # 输出:archive
-
#与%的对比**:
file="/data/user_example.csv"
echo ${file%.*} # 输出:/data/user_example
echo ${file#.*} # 输出:csv
9111

被折叠的 条评论
为什么被折叠?



