Terminal 如何测试命令的结果是否包含鱼壳中的字符串?
我正在尝试编写一个简短的函数,允许我从命令行切换wemo灯光的打开和关闭。基本上,我有一个命令,如果我键入Terminal 如何测试命令的结果是否包含鱼壳中的字符串?,terminal,osx-mountain-lion,fish,Terminal,Osx Mountain Lion,Fish,我正在尝试编写一个简短的函数,允许我从命令行切换wemo灯光的打开和关闭。基本上,我有一个命令,如果我键入wemo status,如果灯亮,则返回开关:灯1,如果灯熄灭,则返回0。我想编写一个fish函数,它基本上允许我切换它们: function lights --description 'Toggle lights' if contains (wemo status) "Lights 1" wemo switch "Lights" off else
wemo status
,如果灯亮,则返回开关:灯1
,如果灯熄灭,则返回0。我想编写一个fish函数,它基本上允许我切换它们:
function lights --description 'Toggle lights'
if contains (wemo status) "Lights 1"
wemo switch "Lights" off
else
wemo switch "Lights" on
end
end
虽然这不起作用。我想帕伦夫妇可能会做一个文本替换?有人知道我如何测试Fish中的一个字符串是否包含另一个字符串吗 所以我最终用以下方法解决了这个问题:
# 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
似乎要测试列表是否包含元素
set elems foo bar baz
contains bar $elems; and echo yep
使用命令替换,列表看起来是面向行的:
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
使用
switch
对结果进行模式匹配是一个不错的选择。作为fish的首席开发人员,这是我的建议。如果愿意,可以删除该变量:开关(wemo状态)
…正确。包含的内容是它不处理通配符模式匹配<代码>包含opt\*$list
将无法按预期工作。另外,在检查带有前置连字符的符号(例如,包含--opt$list
)时,请记住不要忘记您的-->
。
n
y