[英]Comparing variable to string in Bash
我已经尝试过如何在Bash的'if'语句中比较两个字符串变量的建议?
但这对我不起作用。
我有
if [ "$line" == "HTTP/1.1 405 Method Not Allowed" ]
then
<do whatever I need here>
else
<do something else>
fi
无论如何,它总是转到其他语句。 我什至在此之前回显$ line,然后复制并粘贴结果,以确保字符串正确。
对于为什么会发生这种情况的任何帮助将不胜感激。
如果您从兼容的HTTP网络连接中读取该行,则几乎可以肯定它的末尾有一个回车符( \\x0D
,通常表示为\\r
),因为HTTP协议使用CR-LF终止的行。
因此,您需要删除或忽略CR。
如果您使用的是bash,则有两个选项:
使用bash查找和替换语法从该行中删除CR(如果存在):
if [ "${line//$'\\r'/}" = "HTTP/1.1 405 Method Not Allowed" ]; then
使用全局比较进行前缀匹配(需要使用[[
而不是[
,但这还是更好):
if [[ "$line" = "HTTP/1.1 405 Method Not Allowed"* ]]; then
您可以在[[
使用正则表达式比较,以进行子字符串匹配,可能使用正则表达式:
if [[ $line =~ "Method Not Allowed" ]]; then
(如果使用正则表达式,请确保不使用正则表达式运算符。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.