在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
答案 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