linux shell 替换变量,shell高级变量之变量的删除和替换案例

最近在看zabbix server的启动脚本。有如下变量赋值:

exec=/usr/local/zabbix/sbin/zabbix_server

prog=${exec##*/}

这里用到了shell高级变量的删除功能,这里是想要通过exec这个变量得到/usr/local/zabbix/sbin/zabbix_server的程序名称,即zabbix_server。

1)${变量#关键词}    若变量内容从头开始的数据符合关键词,则将符合的最短数据删除

如 prog=${exec#*/};echo $prog 将显示usr/local/zabbix/sbin/zabbix_server

这里从头开始最短匹配任意字符到/的内容。

2)${变量##关键词}   若变量内容从头开始的数据符合关键词,则将符合的最长数据删除

如 prog=${exec##*/};echo $prog 将显示zabbix_server

这里从头开始最长匹配任意字符到/的内容。

这里如果不用shell高级变量的话,也可以用basename命令从/usr/local/zabbix/sbin/zabbix_server这个路径得到程序名zabbix_server

prog=$(basename  $exec);echo $prog  这里同样将显示进程名zabbix_server

3)${变量%关键词}    若变量内容从尾开始的数据符合关键词,则将符合的最短数据删除

如要想得到/usr/local/zabbix/sbin/zabbix_server这个绝对路径的绝对路径目录可以用

prog=${exec%zabbix_server};echo $prog 将显示/usr/local/zabbix/sbin/ 这里从变量的尾部开始最短匹配zabbix_server这个关键字然后删除。

除了使用shell高级变量这里为了得到绝对路径目录也可以使用dirname命令获取

prog=$(dirname $exec);echo $prog 同样将显示/usr/local/zabbix/sbin

4)${变量%%关键词}  若变量内容从尾开始的数据符合关键词,则将符合的最长数据删除

如 prog=${exec%%/*};echo $prog  这里将把exec这个变量清空

这里从exec这个变量末尾开始最长匹配/开头的任意字符串。

5)${变量/旧字符串/新字符串}   若变量内容符合旧字符串,则第一个旧字符串被新字符串取代。

如将/usr/local/zabbix/sbin/zabbix_server这个路径的第一个/变成#则可以用

prog=${exec//\//#};echo $prog 将显示#usr/local/zabbix/sbin/zabbix_server 这里由于需要将/替换成#,所以/需要用\/转义一下

6)${变量//旧字符串/新字符串}  若变量内容符合旧字符串,则全部的旧字符串会被新字符串取代

如将/usr/local/zabbix/sbin/zabbix_server这个路径的全部/变成#则可以用

prog=${exec//\//#};echo $prog 将显示#usr#local#zabbix#sbin#zabbix_server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值