Shell的备忘录1--变量的调用处理

本文介绍如何利用Shell脚本中的变量模式匹配功能从完整路径中提取文件名。通过具体实例展示了如何去除路径前缀及文件扩展名等,适用于解决权限问题或进行更复杂的字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个shell脚本,想用从一个绝对路径得到一个文件名。

直接使用basename在脚本中,莫名地报了一个permission denied的错误。

就干脆想想如何通过字符串操作来解决。搜索整理了一下:

 

${var#pattern} 是要将变量值左边的最短 pattern 拿掉。

${var##pattern} 是要将变量值左边的最长 pattern 拿掉。

${var%pattern} 是要将变量值右边的最短 pattern 拿掉。

${var%%pattern} 是要将变量值右边的最长 pattern 拿掉。

${var%/*} 就是将最后一个 / 及其右边的内容拿掉。

${var##*/} 就是将最后一个 / 及其左边的内容拿掉。由此可以得到文件名。

${var/a/b}把var中的'a'替换为'b'

 

举例:

pathname=/home/allen/shell/test.tar.gz
echo ${pathname}
echo ${pathname##/*/}
echo ${pathname#/*/}
echo ${pathname%.*}
echo ${pathname%%.*}
echo ${pathname/test/allen}
 

输出为

/home/allen/shell/test.tar.gz
test.tar.gz
allen/shell/test.tar.gz
/home/allen/shell/test.tar
/home/allen/shell/test
/home/allen/shell/allen.tar.gz

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值