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:也请记住所说的。
我在我的脚本中使用它,它在我的根服务器和我测试过的其他一些服务器上运行良好。
但是在我的虚拟主机 (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:也请记住