繁体   English   中英

在Bash中将变量与字符串进行比较

[英]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,则有两个选项:

  1. 使用bash查找和替换语法从该行中删除CR(如果存在):

     if [ "${line//$'\\r'/}" = "HTTP/1.1 405 Method Not Allowed" ]; then 
  2. 使用全局比较进行前缀匹配(需要使用[[而不是[ ,但这还是更好):

     if [[ "$line" = "HTTP/1.1 405 Method Not Allowed"* ]]; then 
  3. 您可以在[[使用正则表达式比较,以进行子字符串匹配,可能使用正则表达式:

     if [[ $line =~ "Method Not Allowed" ]]; then 

    (如果使用正则表达式,请确保不使用正则表达式运算符。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM