首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fish shell可以在if语句中进行通配符的填充吗?

fish shell可以在if语句中进行通配符的填充吗?
EN

Stack Overflow用户
提问于 2018-11-14 17:31:33
回答 1查看 759关注 0票数 1

我很难理解是否可以在fish中的if语句中使用通配符。此开关/情况按预期工作:

代码语言:javascript
复制
# correctly echos macOS on macOS
switch "$OSTYPE"
    case 'darwin*'
        echo 'macOS'
    case '*'
        echo 'not macOS'
end

但是,我无法获得相同事物的if语句版本。

代码语言:javascript
复制
# doesn't work - prints 'not macOS' on macOS
if [ "$OSTYPE" = 'darwin*' ]
    echo 'macOS'
else
    echo 'not macOS'
end

在zsh/bash中,您可以这样做:

[[ $OSTYPE == darwin* ]] && echo 'macOS' || echo 'not macOS'

或者,更详细地说,

代码语言:javascript
复制
if [[ $OSTYPE == darwin* ]]
  then echo 'macOS'
  else echo 'not macOS'
fi

我的问题是,fish是否支持针对if语句中的变量进行通配符珠化?我做错了吗?我在鱼的文档中找不到任何一个例子来告诉我。

注意:__:我不是在问检查鱼的$OSTYPEhttps://stackoverflow.com/questions/26258244/is-there-a-way-to-detect-os-in-fish-shell-akin-to-the-ostype-variable-in-bash。我的问题严格地限制在fish中是否可以在if语句中进行通配符珠化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 17:37:41

不是的。

像你说的那样使用switch,或者使用string内置的

代码语言:javascript
复制
if string match -q 'darwin*' -- "$OSTYPE"

if并不重要-在您的示例中运行的命令是[,它是test的另一个名称,它是http://fishshell.com/docs/current/commands.html#test (或man testhelp test)文档的内置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53305808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档