bash复赛为chroot

时间:2018-02-12 18:29:16

标签: bash chroot

我在我的脚本中使用它,它在我的根服务器和我测试的其他一些服务器上工作正常。

但是在我的虚拟主机(Hosted Plesk)上使用它时出现问题:chrooted shell,它不会输出任何内容。刚退出。我的webhoster说我需要使用绝对路径,但我不知道如何在bash复赛中应用它。

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

(我在这里的第一篇文章,对不起,如果我忘记了某些内容或错误地格式化了整个帖子)

2 个答案:

答案 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.所说的内容。