加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在bash shell中链接文件名修饰符?

发布时间:2020-12-16 01:32:59 所属栏目:安全 来源:网络整理
导读:我理解修饰符### %%%,但我无法弄清楚它是否可以在tcsh中将它们链接在一起. tcsh中的示例 set f = /foo/bar/myfile.0076.jpgecho $f:r:e-- 0076echo $f:h:t-- bar 在bash中,我想知道如何做以下事情: echo ${f%.*#*.} 在一条线上. 我的目标是能够在命令行上根
我理解修饰符### %%%,但我无法弄清楚它是否可以在tcsh中将它们链接在一起.

tcsh中的示例

set f = /foo/bar/myfile.0076.jpg
echo $f:r:e
--> 0076

echo $f:h:t
--> bar

在bash中,我想知道如何做以下事情:

echo ${f%.*#*.}

在一条线上.

我的目标是能够在命令行上根据需要以各种方式操作文件名.我不是要为一个特定的案例编写脚本.因此,如果有一种方法可以链接这些修饰符,或者可能有另一种方式,那么我很想知道.谢谢

在bash中,您可以嵌套参数扩展,但只能在${parameter#word}的单词部分中有效.

例如:

$var="foo.bar.baz"; echo ${var%.*}
foo.bar
$var="foo.bar.baz"; echo ${var#foo.bar}
.baz
$var="foo.bar.baz"; echo ${var#${var%.*}}
.baz

要使用纯参数扩展来执行您想要的操作,您需要具有如下的临时变量:

$var="/foo/bar/myfile.0076.jpg"; tmp=${var#*.}; out=${tmp%.*}; echo $out
0076

但是,如果您愿意使用set builtin,那么您实际上可以一次性访问所有字段,并巧妙地使用搜索/替换参数扩展,如下所示:

$var="/foo/bar/myfile.0076.jpg"; set -- ${var//[./]/ }; echo $4
0076

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读