zsh 在一行中获取带点的扩展(最好是一个扩展)

问题描述 投票:0回答:1

如何获得包含点的 zsh 扩展?

所需的输入和输出示例:

  • 'one.two'
    -
    '.two'
  • 'none'
    -
    ''

我知道我可以测试“这个字符串有扩展名吗?”使用 if 语句,那么如果它确实有扩展,我可以使用

${var:e}
参数扩展,但这非常冗长。

我确信一定有一种更短的方法来获取文件名的结尾。

这对我有用的原因是,我可以生成与现有文件名具有相同扩展名的新文件名,即使这些现有文件名没有扩展名。 我之前试过

"${existing:r}-$count.${existing:e}"

但这不适用于没有扩展名的现有文件名(它在末尾添加一个点)

shell terminal zsh
1个回答
0
投票

构建一个数组,然后用

.
连接数组的内容。

arr=($existing:r-$count $existing:e)
result=${(j:.:)arr}
© www.soinside.com 2019 - 2024. All rights reserved.