鱼壳:测试:索引2处缺少参数

jvi*_*tti 1 fish

我有以下功能:

function is_file
  set file $argv[1]

  if test ?f $file
    return 0
  else
    return 1
  end
end
Run Code Online (Sandbox Code Playgroud)

但是在调用时:

is_file ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

我明白了:

test: Missing argument at index 2
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

小智 7

问题是该行中的连字符

    if test ?f $file
Run Code Online (Sandbox Code Playgroud)

它被编码为Unicode连字符U + 2010,但它应该是ASCII连字符 - 减号(0x2D),它是Unicode字符U + 002D.如果我删除连字符并自己重新键入,它对我来说很好.

顺便说一下,这个函数可以写得更简洁:

function is_file
    test -f $argv[1]
end
Run Code Online (Sandbox Code Playgroud)