存在具有特定类型的文件的测试

时间:2017-07-14 08:53:03

标签: shell fish

在fish中,您可以测试test -e hello.txt是否存在特定文件,但我想知道是否有办法在文件名中使用通配符值,以检查是否存在文件类型。< / p>

更具体地说,我正在制作一个检查Xcode工作空间的快速功能,如果发现它打开它,如果没有,则检查Xcode项目,如果发现它打开,否则打印错误。

以下是当前的实施:

function xcp
    open *.xcodeproj
end

function xcw
    open *.xcworkspace
end

function xc
    if test -e *.xcworkspace
        xcw
    else if test -e *.xcodeproj
        xcp
    else
        echo "No Xcode Workspace or Project in this directory."
    end
end

“工作”分钟,但是当它找不到工作区或项目文件时,它会输出有关没有匹配项的错误。然而,这是默认情况下完成的,我想知道我是否可以以某种方式隐藏它。

这是错误输出,当它找不到工作区但找到项目并打开时:

No matches for wildcard '*.xcworkspace'.  (Tip: empty matches are allowed in 'set', 'count', 'for'.)
~/.config/fish/functions/fish_prompt.fish (line 1): if test -e     *.xcworkspace
                                                           ^
in function 'xc'
    called on standard input

1 个答案:

答案 0 :(得分:7)

尝试计算它们:

function xc
    set -l workspaces *.xcworkspace
    set -l projects   *.xcodeproj
    if test (count $workspaces) -gt 0
        xcw
    else if test (count $projects) -gt 0
        xcp
    else
        echo "No Xcode Workspace or Project in this directory."
    end
end