鱼:如果错误:`[:索引2缺少参数`

时间:2019-03-24 07:42:30

标签: if-statement fish

我是Fish的首次用户,因此我尝试将Bash提示符(PS1)转换为fish_prompt,并将其保存到~/.config/fish/functions/fish_prompt.fish

这是与this类似的问题,但是,该解决方案不适用于我。

我尝试删除[],使用test,但是,我不知道如何在Fish中比较字符串

if [ $prompt_hostname == 'remote-host' ]
    set userHost remote
else
    set userHost local
end

1 个答案:

答案 0 :(得分:3)

您需要引用该变量,并将==替换为=(因为前者是bashism)。

问题在于,就像在bash中一样,空变量在到达命令之前已被删除,因此[(这只是test的另一个名称)的参数如下: / p>

[ == 'remote-host' ]

这不是有效的表达式。

所以,这应该是

if [ "$prompt_hostname" = 'remote-host' ]

if test "$prompt_hostname" = remote-host

(请注意,引用文字字符串是不必要的,但在两者中均无害-不会对其进行任何更改,因为该字符串不包含任何将被扩展的部分-否$,no *,no { {1}},....)