如何检查fish脚本中是否存在程序?我知道Bash没有绝对的解决方案,但是使用if type PROGRAM >/dev/null 2>&1; then...得到了很好的结果。有没有类似的鱼?
if type PROGRAM >/dev/null 2>&1; then...
rjjhvcjd1#
有type -q,如
type -q
if type -q $program # do stuff end
如果某个东西是一个函数,内置或外部程序(即,如果它是fish将执行东西)。还有
command -q
builtin -q
functions -q
对于所有这些,“-q”标志会使所有输出静默,只查询是否存在。例如,如果builtin -q返回true,那就意味着它也是一个内置函数--它仍然可以是一个函数或命令。command -q从fish 3.1.0开始工作,因为-q标志意味着-s,而不是command -sq。
-q
-s
command -sq
1条答案
按热度按时间rjjhvcjd1#
有
type -q
,如如果某个东西是一个函数,内置或外部程序(即,如果它是fish将执行东西)。
还有
command -q
,仅当它作为外部程序存在时才返回0builtin -q
,仅当它是一条内置鱼时返回0functions -q
,仅当它是fish函数时返回0对于所有这些,“-q”标志会使所有输出静默,只查询是否存在。
例如,如果
builtin -q
返回true,那就意味着它也是一个内置函数--它仍然可以是一个函数或命令。command -q
从fish 3.1.0开始工作,因为-q
标志意味着-s
,而不是command -sq
。