bash 重新匹配为 chroot

bash rematch as chroot

我在我的脚本中使用它,它在我的根服务器和我测试过的其他一些服务器上运行良好。

但是在我的虚拟主机 (Hosted Plesk) 上使用它时出现问题:chroot shell,它不输出任何内容。只是退出。我的网站托管商说我需要使用绝对路径,但我不知道如何在 bash 重赛中应用它。

#!/bin/bash 
str='"<result="Abc1234" />"'
regex='<result="([0-9a-zA-Z._-/:]*)" />'
[[ $str =~ $regex ]] && echo ${BASH_REMATCH[1]}

(这是我的第一个 post,如果我忘记了什么或整个格式错误,请见谅 post)

而不是:

regex='<result="([0-9a-zA-Z._-/:]*)" />'

说:

regex='<result="([0-9a-zA-Z._/:-]*)" />'

- 被移动到不再被认为是一个范围的地方。

实际上我很惊讶它能在其他系统上运行。我已经用 ; echo $? 替换了 && echo ${BASH_REMATCH[1]} (这是另一个可能的调试步骤)并且得到 2 根据 man bash 意味着 "syntactically incorrect regular expression".

如果这没有帮助。我们必须看到不同的原因,我们的 shell 解释脚本的方式,但无论如何打印 return 状态可能是下一步要采取的。

在下面的讨论中发现问题与服务器上不同的默认区域设置有关。确保您是 运行 具有正确语言环境的命令:

LANG=en_US.UTF-8 bash script.sh

(en_US.UTF-8) 结果证明是适合您情况的语言环境。


PS:也请记住所说的。