Shell path analyze: basename or filename

在 bash 中的變量調用處理中,
${var#pattern} 是要將變量值左邊的最短 pattern 拿掉。
${var##pattern} 是要將變量值左邊的最長 pattern 拿掉。
因此,${var##*/} 就是將最後一個 / 及其左邊的內容拿掉。

${var%pattern} 是要將變量值右邊的最短 pattern 拿掉。
${var%%pattern} 是要將變量值右邊的最長 pattern 拿掉。
因此,${var%/*} 就是將最後一個 / 及其右邊的內容拿掉。

來玩個實驗好了:
當 FNAME="/home/kenny/tmp/test.1.sh" 的時候﹕
${FNAME} 顯示變數值的全部。 /home/kenny/tmp/test.1.sh

${FNAME##/*/} 比對變數值開端﹐如果以 /*/ 開頭的話﹐砍掉最長的部份。                 test.1.sh

${FNAME#/*/} 比對變數值開端﹐如果以 /*/ 開頭的話﹐砍掉最短的部份。       kenny/tmp/test.1.sh

${FNAME%.*} 比對變數值末端﹐如果以 .* 結尾的話﹐砍掉最短的部份。 /home/kenny/tmp/test.1   

${FNAME%%.*} 比對變數值末端﹐如果以 .* 結尾的話﹐砍掉最長的部份。 /home/kenny/tmp/test     

${FNAME/sh/bash} 如果在變數值中找到 sh 的話﹐將第一個 sh 換成 bash。 /home/kenny/tmp/test.1.bash

${FNAME//sh/bash} 如果在變數值中找到 sh 的話﹐將全部 sh 換成 bash。 /home/kenny/tmp/test.1.bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值