问题描述
我想在foreach ($data["{$section['id']}"] as $value) {
if (!empty($value)) {
code......
}
}
中用()将表达式分组,就像这样:
case
这并没有取得任何成功。我也尝试过:
case a in
'*(a|b)*') printf '%s\n' 'something something';;
esac
*(a|b)*
我都没有成功。
解决方法
这将是特定于Bash的:
您需要启用b = np.array([1,1])
B = np.tile(b,(A.shape[0],1))
array([[1,1],[1,1]])
A + B
并使用此特定语法
extglob
请参见#!/usr/bin/env bash
shopt -s extglob
case "$1" in
*@(a|b)*) printf '%s\n' 'something something';;
esac
:
如果使用内置的shopt启用了
man bash
shell选项,则会识别出几个扩展的模式匹配运算符。在以下描述中,模式列表是由extglob
分隔的一个或多个模式的列表。可以使用以下一个或多个子图案来形成复合图案:
|
匹配零个或一次出现的给定模式?(pattern-list)
匹配零个或多个给定模式的出现*(pattern-list)
匹配给定模式的一个或多个出现+(pattern-list)
匹配给定的模式之一@(pattern-list)
匹配除给定模式之一以外的任何内容
或者,您可以让!(pattern-list)
在下一个模式的命令组中继续执行,方法是在命令组末尾使用特殊的case
标记。
这是 NOT POSIX ,但由 ;&
, bash
或 {{1} } 仍然:
ksh
现在,正如that other guy在评论中指出的那样。
POSIX方式:
zsh
,
您可以转换为基本模式匹配,如下所示:
case 'a' in
*a*|*b*) printf '%s\n' 'something something';;
esac