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?
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
contains
seems to be to test if a list contains an element
set elems foo bar baz
contains bar $elems; and echo yep
Using command substitution, the list appears to be line-oriented:
contains "e f" (printf "%s\n" "a b c" "d e f" "g h i"); and echo y; or echo n
contains "d e f" (printf "%s\n" "a b c" "d e f" "g h i"); and echo y; or echo n
n
y
Pattern matching the result using switch
is a good choice.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With