Script de shell para obtener el nombre del archivo, el nombre de la ruta, el tipo de archivo

1. Obtenga el contenido especificado de la cadena

Extraiga información específica de la cadena, a menudo utilizada para obtener el nombre del archivo, el tipo de archivo, la ruta, etc.

1.1 Obtener información de cadena

用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容
"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串
"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串
"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串
"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串

1.2 Buscar y reemplazar la información en la cadena

字符串的搜索与替换:
"\${PARAMETERS/PATTERN/STRING}" : 从PARAMETERS中搜索PATTERN,并替换为STRING
"\${PARAMETERS//PATTERN/STRING}": 从PARAMETERS中搜索全部的PATTERN,并替换为STRING
"\${PARAMETERS/PATTERN}"		: 从PARAMETERS中搜索PATTERN,并删除
"\${PARAMETERS//PATTERN}"		: 从PARAMETERS中搜索PATTERN,并全部删除

1.3 Ejemplos

#########################################################################
# File Name: getFilePathName.sh
# Author: Toney Sun
# mail: [email protected]
# Created Time: 2020年04月17日 星期五 09时57分43秒
# Function: 主要用来从字符串中获取文件名、路径名或者文件类型
#########################################################################
#!/bin/bash

string=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh

cat <<EOF
用指定的方式(PATTERN)从字符串(PARAMETERS)中移除内容
"\${PARAMETERS#PATTERN}" : 移除从开头匹配的字符串
"\${PARAMETERS##PATTERN}": 移除从开头匹配最长的字符串
"\${PARAMETERS%PATTERN}" : 移除从末尾匹配的字符串
"\${PARAMETERS%%PATTERN}": 移除从末尾匹配最长的字符串
EOF

echo $string
echo "\${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,并全部删除
EOF

string=/mnt/hgfs/em嵌入式学习记录/shell/linuxShell-5/getFilePathName.sh

echo "\${string/shell/SHELL}="${string/hell/HELL}
echo "\${string//hell/HELL}="${string//hell/HELL}
echo "\${string/hell}="${string/hell}
echo "\${string//hell}="${string//hell}

Los resultados son los siguientes:

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

Incluido en "shell script learning"

81 artículos originales publicados · Me gusta 69 · Visitantes 50,000+

Supongo que te gusta

Origin blog.csdn.net/s2603898260/article/details/105574862
Recomendado
Clasificación