鱼壳中的字符串包含

Sas*_*sha 3 fish

我已经查看了Stack Overflow上的所有类似问题,并在他们的文档中尝试了很多东西.我目前的尝试如下.

我想要实现的是基于计算机用户的差异行为.我有一台工作计算机和一台家用计算机,当我在命令行输入"代码"时,我希望工作计算机转到另一个目录,而不是我在家中输入时所需的代码.我试过这个(我的工作用户名是afk,home是sfk):

function code
    set result (dirh)
    if [contains "sfk" $result]
        cd ~/rails
    else if [contains "afk" $result]
        cd ~/code
    else
        echo $result
    end
end
Run Code Online (Sandbox Code Playgroud)

目前,这是"未知命令包含Users/sfk/.config/fish /"(我的PWD是Users/sfk/.config/fish /当我输入时).我想也许包含只是用于列表,但文档对此并不是特别清楚?知道怎么做这个吗?

编辑

刚试过这个,虽然它不再是错误,但它最终会出现在else情况下,它不应该导致我的用户IS sfk,它包含在dirh字符串中:

function code
    set result (dirh)
    if test (contains "sfk" $result)
        cd ~/rails
    else if test (contains "afk" $result)
        cd ~/code
    else
        echo $result
    end
end
Run Code Online (Sandbox Code Playgroud)

ter*_*rje 6

如上面评论中所述,这是此特定用例的最佳解决方案.但要回答这个问题,万一有人想做别的事情.

你是对的contains,它与列表项完全匹配.您可以改用该switch功能.其中支持通配符匹配.

function code
    set -l result (dirh)

    switch $result
        case '*sfk*'
            cd ~/rails
        case '*afk*'
            cd ~/code
        case '*'
            echo $result
    end
end
Run Code Online (Sandbox Code Playgroud)