shell中 ${} 与##,%%的联合用法

语法
${原始值 参数*变量}

#!/bin/bash
file=/dir1/dir2/dir3/my.file.txt
echo "原始值:$file"
value=${file#*2}
echo "删除第一个2,及左边所有字符: $value"
value1=${file##*/}
echo "删除最后一个/,及左边所有字符: $value1"
value2=${file#*.}
echo "删除第一个. ,及左边所有字符:$value2"
value3=${file##*.}
echo "删除最后一个.,及左边所有字符: $value3"
value4=${file%/*}
echo "删掉右边数第一个 / ,及其右边的字符串:$value4"
value5=${file%%/*}
echo "删除右边数最后一个/  及其右边的字符串:(空值)$value5"
value6=${file%.*}
echo "删掉右边数第一个 .  及其右边的字符串:$value6"
value7=${file%%.*}
echo "删除右边数最后一个. ,及右边的字符:$value7"

结果

# 提取
${file:0:5}:提取最左边的5 个字节:/dir1
${file:5:5}:提取第5 个字节右边的连续5个字节:/dir2
# 替换
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为path:/path1/path2/path3/my.file.txt

${#var} 可计算出变量值的长度:

${#file} 可得到27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节

posted @ 2022-07-14 10:49  菜鸟成长历程  阅读(1264)  评论(0编辑  收藏  举报