ファイル名、パス名、ファイルタイプを取得するシェルスクリプト

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: [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}

結果は次のとおりです。

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

「シェルスクリプト学習」に含まれています

81件の元の記事が公開されました 高く評価されました 69 訪問者50,000以上

おすすめ

転載: blog.csdn.net/s2603898260/article/details/105574862