在fish中,您可以测试是否存在特定文件test -e hello.txt,但我想知道是否有办法在文件名中使用通配符值,以检查是否存在任何文件类型.
更具体地说,我正在制作一个检查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
Run Code Online (Sandbox Code Playgroud)
它在一分钟"工作",但是当它找不到工作空间或项目文件时,它会输出一个关于没有匹配的错误.然而,这是默认情况下完成的,我想知道我是否可以以某种方式隐藏它.
这是错误输出,当它找不到工作区时,但找到一个项目并打开:
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
Run Code Online (Sandbox Code Playgroud)
试试吧:
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
Run Code Online (Sandbox Code Playgroud)