我在我的脚本中使用它,它在我的根服务器和我测试的其他一些服务器上工作正常。
但是在我的虚拟主机(Hosted Plesk)上使用它时出现问题:chrooted shell,它不会输出任何内容。刚退出。我的webhoster说我需要使用绝对路径,但我不知道如何在bash复赛中应用它。
#!/bin/bash
str='"<result="Abc1234" />"'
regex='<result="([0-9a-zA-Z._-/:]*)" />'
[[ $str =~ $regex ]] && echo ${BASH_REMATCH[1]}
(我在这里的第一篇文章,对不起,如果我忘记了某些内容或错误地格式化了整个帖子)
答案 0 :(得分:1)
而不是:
regex='<result="([0-9a-zA-Z._-/:]*)" />'
说:
regex='<result="([0-9a-zA-Z._/:-]*)" />'
-
被移动到不再被视为范围的地方。
实际上我对其他系统的工作感到惊讶。我已将&& echo ${BASH_REMATCH[1]}
替换为; echo $?
(这是另一个可能的调试步骤)并且正在获得2
,根据man bash
表示&#34;语法上不正确的正则表达式& #34;
如果这没有帮助。我们必须看到不同的原因,我们的shell解释脚本的方式,但无论如何打印返回状态可能是下一步。
答案 1 :(得分:1)
在下面的讨论中,问题发现该问题与服务器上的不同默认语言环境有关。确保使用正确的语言环境运行命令:
LANG=en_US.UTF-8 bash script.sh
(en_US.UTF-8
)在你的案例中证明是正确的语言环境。
PS:还请记住Ondrej K.所说的内容。