【问题标题】:basename of file with a leading - (dash)带有前导 - (破折号)的文件的基本名称
【发布时间】:2020-09-02 18:24:10
【问题描述】:

我在 zsh 脚本中遇到了 basename 问题。想象一下 $directory 包含一个带有前导破折号的文件名,在我的例子中它是“-Fast-”。然后脚本执行

        folder=$(basename "$directory")

或者如果我尝试其他语法

        folder=`basename "$directory"`

两者都会导致相同的错误:

basename: 非法选项 -- F 用法:基本名称字符串[后缀] 基本名称 [-a] [-s 后缀] 字符串 [...]

除了不使用带有前导破折号的文件(这可能很难向普通用户解释)之外,我该怎么办? 谢谢!

【问题讨论】:

    标签: zsh filenames basename


    【解决方案1】:

    在大多数命令中,您可以使用双破折号-- 来表示“参数结束”。

    folder=`basename -- "$directory"`
    

    【讨论】:

      【解决方案2】:

      如何完全避免basename 而只是做一个

      folder=$directory:t
      

      顺便说一句,如果你想要 dirname 的等价物(即目录部分),那就是 $directory:h

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        • 2017-12-05
        • 1970-01-01
        • 2013-02-04
        • 2011-11-05
        • 2016-03-18
        • 1970-01-01
        相关资源
        最近更新 更多