1. 从字符串获取指定内容
从字符串中提取特定的信息,常用于获取文件名、文件类型、所在路径等。
1.1 获取字符串信息
用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串
1.2 搜索并替换字符串中的信息
字符串的搜索与替换:"\${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING"\${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING"\${PARAMETERS/PATTERN}" : 从PARAMETERS中搜索PATTERN,并删除"\${PARAMETERS//PATTERN}" : 从PARAMETERS中搜索PATTERN,并全部删除
1.3 示例
########################################################################## File Name: getFilePathName.sh# Author: Toney Sun# mail: vip_13031075266@163.com# Created Time: 2020年04月17日 星期五 09时57分43秒# Function: 主要用来从字符串中获取文件名、路径名或者文件类型##########################################################################!/bin/bashstring=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.shcat <<EOF 用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容 "\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串 "\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串 "\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串 "\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串 EOFecho $stringecho "\${string#*/}="${string#*/}echo "\${string##*/}="${string##*/}echo "\${string%/*}="${string%/*}echo "\${string%%/*}="${string%%/*}cat <<EOF 字符串的搜索与替换: "\${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING "\${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING "\${PARAMETERS/PATTERN}" : 从PARAMETERS中搜索PATTERN,并删除 "\${PARAMETERS//PATTERN}" : 从PARAMETERS中搜索PATTERN,并全部删除 EOFstring=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.shecho "\${string/shell/SHELL}="${string/hell/HELL}echo "\${string//hell/HELL}="${string//hell/HELL}echo "\${string/hell}="${string/hell}echo "\${string//hell}="${string//hell}
运行结果如下:
toney@ubantu:/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5$ ./getFilePathName.sh 用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容"${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串"${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串"${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串"${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串 /mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh ${string#*/}=mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh${string##*/}=getFilePathName.sh${string%/*}=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5${string%%/*}=字符串的搜索与替换:"${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING"${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING"${PARAMETERS/PATTERN}" : 从PARAMETERS中搜索PATTERN,并删除"${PARAMETERS//PATTERN}" : 从PARAMETERS中搜索PATTERN,并全部删除${string/shell/SHELL}=/mnt/hgfs/em嵌入式学习记录/sHELL/linuxShell-5/getFilePathName.sh${string//hell/HELL}=/mnt/hgfs/em嵌入式学习记录/sHELL/linuxSHELL-5/getFilePathName.sh${string/hell}=/mnt/hgfs/em嵌入式学习记录/s/linuxShell-5/getFilePathName.sh${string//hell}=/mnt/hgfs/em嵌入式学习记录/s/linuxS-5/getFilePathName.sh