Shell 掐头去尾法


偶然间看到一个 shell 脚本:

#!/bin/sh
eureka_url_list="http://eureka0.svc.default.local,http://eureka1.svc.default.local,"
eureka_url_list=${eureka_url_list%?}
echo "$eureka_url_list"

运行脚本,输出:

http://eureka0.svc.default.local,http://eureka1.svc.default.local

原始字符串末尾的逗号被删除了。

 


Shell  掐头去尾法

# 表示掐头,% 表示去尾
单个 # 或 % 表示最小匹配,两个 # 或 % 表示最大匹配

 

栗子:

file=/dir1/dir2/dir3/my.file.txt

${file#*/}   删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}  删掉最后一个 /  及其左边的字符串:my.file.txt
${file#*.}   删掉第一个 .  及其左边的字符串:file.txt
${file##*.}  删掉最后一个 .  及其左边的字符串:txt
${file%/*}   删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}  删掉第一个 /  及其右边的字符串:(空值)
${file%.*}   删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}  删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my

 

${file%?}  表示删掉最后一个字符。

最后

简单回顾下 * ? . 在通配符和正则中各自表达的意义。

 

字符通配符正则
   *任意多个字符(包括0个和1个)前面的字符出现任意次
  ?任意一个字符前面的字符出现0次或1次
   .就表示一个点,无特殊意义任意一个字符

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值