我正在尝试编写一种模式,以匹配包含以下内容的目录中的任何文件名:数字,紧随其后的是字母“ e”或“ h”。 (例如:3e.txt) 我需要在终端/外壳中测试这些模式。 我尝试编写几种模式,但是它们都找不到我故意放置在工作目录中以测试模式的3e.txt和3h.txt文件。 我对S ...
提示:本站收集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
语句中是否有可能在通配符中进行通配符修饰。
没有。
使用您所说的switch
或内置的string
if string match -q 'darwin*' -- "$OSTYPE"
if
并不重要-在示例中运行的命令是[
,这是test
的替代名称,它是内置的文档,位于http://fishshell.com/docs/current/commands.html#test (或man test
或help test
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.