Search code examples
terminalosx-mountain-lionfish

How to test if result of a command contains a string in fish shell?


I'm trying to write a brief function to allow me to toggle wemo lights on and off from the command line. Basically I have a command that if i type wemo status will return either Switch: Lights 1 if the lights are on or 0 if they are off. I'd like to write a fish function that essentially lets me toggle them:

function lights --description 'Toggle lights'
    if contains (wemo status) "Lights 1"
        wemo switch "Lights" off
    else
        wemo switch "Lights" on
    end
end

Though this doesn't work. I'm thinking that the parens probably do a textual replacement? Anyone know how I can test if a string contains another string in Fish?


Solution

  • So I ended up fixing this with the following:

    # Toggle lights
    function lights --description "Toggle Wemo Lights"
        set -l wemo (wemo status)
        switch $wemo
            case '*1'
                wemo switch "Lights" off
            case '*0'
                wemo switch "Lights" on
        end
    end