Seb*_*eth 2 regex bash zsh macos-catalina
所以我为自己创建了一个可爱的小 bash 脚本:
#!/usr/bin/env bash
TEXT="FOO BAR"
REGEX="FOO (.+)"
if [[ $TEXT =~ $REGEX ]]; then
echo "Matched ${BASH_REMATCH[1]}"
else
echo "No match."
fi
Run Code Online (Sandbox Code Playgroud)
很基本。如果我运行./cutescript.sh,那么我得到结果:
Matched BAR
Run Code Online (Sandbox Code Playgroud)
但是如果我获取脚本,. ./cutescript.sh,那么它仍然匹配,但BASH_REMATCH[1为空。
笏。
我在 MacOS Catalina 10.15.7 (19H2) 上,在 中执行此操作zsh,但使用了bashshebang。
任何人都可以解释这种违规行为吗?
当您使用 读取文件时.,它会由您正在运行的任何 shell 执行 - 在这种情况下,您说您在 zsh 中。的名称BASH_REMATCH阵列,顾名思义,具体到bash; 例如,如果您的 shell 是 zsh,则将在这种情况下找到匹配的文本$match[1]。而且我认为 ksh 根本不进行真正的正则表达式匹配。
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |