Shell中的${xxx%% *}字符串分割方法

问题

Arm开发版常见的系统是Armbian,每次登录都会有一个现实系统信息的banner非常实用
本着学习的心态,看了一下源码如何实现
脚本存放位置是/etc/update-motd.d/30-armbian-sysinfo
涉及字符串操作%%不太理解

$ echo $load
1.72 1.12 0.99
$ echo ${load%% *}
1.72

解析

#可以用${ }分别替换得到不同的值:
$ file=/dir1/dir2/dir3/my.file.txt

#删掉第一个 / 及其左边的字符串:
$ echo ${file#*/}
dir1/dir2/dir3/my.file.txt

#删掉最后一个 / 及其左边的字符串
$ echo ${file##*/}
my.file.txt

#删掉第一个 . 及其左边的字符串
$ echo ${file#*.}
file.txt

#删掉最后一个 . 及其左边的字符串
$ echo ${file##*.}
txt

#删掉最后一个 / 及其右边的字符串
$ echo ${file%/*}
/dir1/dir2/dir3

#删掉第一个 / 及其右边的字符串(空)
$ echo ${file%%/*}


#删掉最后一个 . 及其右边的字符串
$ echo ${file%.*}
/dir1/dir2/dir3/my.file

#删掉第一个 . 及其右边的字符串
$ echo ${file%%.*}
/dir1/dir2/dir3/my

#提取最左边的 5 个字节
$ echo ${file:0:5}
/dir1

#提取第 5 个字节右边的连续5个字节
$ echo ${file:5:5}
/dir2

#将第一个dir 替换为path
$ echo ${file/dir/path}
/path1/dir2/dir3/my.file.txt

#将全部dir 替换为 path
$ echo ${file//dir/path}
/path1/path2/path3/my.file.txt

参考

Shell中的${ }、#、##、%、%%使用范例-DevOps(甘兵)-51CTO博客

原文地址:https://www.cnblogs.com/azureology/p/14266491.html