[Linux]:Bash shell字符串截取及命令替换

 命令的2种替换形式 $()和 ``
示例:截断字符串
a):
#截取文件名称
var1=$(basename /home/aimybbe/bash/test.sh)
echo $var1

#截取目录
var2=$(dirname /home/aimybbe/bash/test.sh)
echo $var2
b):
var1=`basename /home/aimybbe/bash/test.sh`
echo $var1

var2=$(dirname /home/aimybbe/bash/test.sh)
echo $var2

更专业的字符串截取方法:

示例:testfile.tar.gz

a)获取后缀名
你想截取 tar.gz
filename=testfile.tar.gz
file=${filename#*.}
echo $file
你想截取 gz
filename=testfile.tar.gz
file=${filename##*.}
echo $file
说明:
这里的${filename##*.}什么意思呢?在 ${ } 中输入环境变量名称,两个##(或一个#),然后是通配符 ("*.")。
然后,bash 取得 filename,找到从字符串 "testfile.tar.gz"开始处开始、且匹配通配符 "*."的最长子字符串(或最短),然后将其从字符串的开始处截去。
注意:
1.#意思是从字符串的开始处开始截取。
2.两个##代表匹配的最大长度,一个#代表匹配的最小长度(也就是说这里不是一个#匹配一个‘.’)

b)获取文件名称(也就是去除后缀名)
你想截取testfile.tar
filename=testfile.tar.gz
file=${filename%.*}
echo $file
你想截取testfile
filename=testfile.tar.gz
file=${filename%%.*}
echo $file
注意:
1.这个方法和上面原理相同%就是从末尾字符串开始截取,%%就是最大长度,%就是最小长度

c)截取任意的字符
你想截取file
filename=testfile.tar.gz
file=${filename:4:4}
echo $file

你想截取test
filename=testfile.tar.gz
file=${filename:0:4}
echo $file
说明:
格式为${filename::}第一个':'后面的数字是字符串的索引从左边开始,索引从0开始,第二个':'后面的数字是长度,两处的数字都是十进制数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值