繁体   English   中英

鱼壳可以在if语句中进行通配符修饰吗?

Can fish shell do wildcard globbing in an if statement?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

# correctly echos macOS on macOS
switch "$OSTYPE"
    case 'darwin*'
        echo 'macOS'
    case '*'
        echo 'not macOS'
end

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

# 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'

或者,更详细地说,

if [[ $OSTYPE == darwin* ]]
  then echo 'macOS'
  else echo 'not macOS'
fi

我的问题是,fish是否支持在if语句中对变量使用通配符? 我做错了吗? 我在fish文档中找不到一个可以告诉我任何一种方法的示例。

注意 :我不是在询问在鱼中检查$OSTYPE问题。 我知道有更好的方法可以做到这一点 我的问题严格限于在if语句中是否有可能在通配符中进行通配符修饰。

1 个回复

没有。

使用您所说的switch或内置的string

if string match -q 'darwin*' -- "$OSTYPE"

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

1 Shell Globbing-通配符匹配问题

我正在尝试编写一种模式,以匹配包含以下内容的目录中的任何文件名:数字,紧随其后的是字母“ e”或“ h”。 (例如:3e.txt) 我需要在终端/外壳中测试这些模式。 我尝试编写几种模式,但是它们都找不到我故意放置在工作目录中以测试模式的3e.txt和3h.txt文件。 我对S ...

2 检查鱼壳参数中的通配符

在编写鱼壳函数时,我想知道命令参数中是否使用了一个单独的通配符(不是较大表达式的一部分)。 Fish在将参数传递给我的函数之前会进行通配符扩展,因此除了检查参数是否与ls的输出相同之外,没有其他简单的方法可以看到。 但是,这种方法的低效率使我感到难过。 是否有更好的方法可以做到这一点,而无 ...

3 if语句中的fish shell -eq和-a

我正在阅读鱼壳的git.fish完成脚本(/usr/local/Cellar/fish/2.1.2/share/fish/completions),我在理解语法的含义时遇到了一些问题。 在街区, 我知道cmd被设置为commandline -opc 。 但是在下一个语句中(cou ...

6 鱼壳:rm 带通配符但未找到文件

有没有办法用类似的命令来使用fish 虽然没有可用的pdf文件? 目前我得到了回应 我发现zsh的将possibilty到集setopt +o nomatch但这并不认可fish贝。 使用版本 3.0.2 ...

2020-01-10 08:43:48 0 232   fish
10 如何翻译鱼壳的`for`循环?

我正在将一个脚本从Z shell翻译成Fish,我有一部分我无法弄清楚如何翻译: 我可以在Fish中找到for循环的唯一文档就是这种 。 我怎么会在Fish中这样做? ...

2014-01-02 01:54:47 2 12982   fish
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM