我正在尝试在 Fish shell 脚本中测试二进制文件是否存在figlet
。由于我使用 Linux 和 OS X,因此我不能依赖位于同一位置的文件,并且需要动态解析它。我习惯$(which)
在 bash 中执行此操作,这很有效。
但对于鱼来说,这不能正常工作。为什么?
function print_hostname --description 'print hostname'
if test -x (which figlet)
hostname | figlet
end
end
答案1
type
在fish
类似 Bourne 的 shell 中使用:
if type -q figlet
hostname | figlet
end
或者限制为可执行文件$PATH
(忽略函数、内置函数):
if command -s figlet > /dev/null
hostname | figlet
end
也可以看看为什么不用“哪个”呢?那该用什么呢?