使用if语句旋转



你能帮我解析一下这个代码吗??服务器ip被屏蔽的原因很明显。

#!/bin/sh
command=$(curl -sI https://*******.com | grep Server)
echo "$command"
reply="Server: nginx/1.18.0 (Ubuntu)"
echo "$reply"

if [ "$command" = "$reply" ]; then
echo "It works!"
fi

Info I have caught:

  • 我在ShellCheck中没有得到错误。我知道$command等于$reply,但它不会回答我"它有效!"反正在
  • 我也测试过使用/usr/bin/curl
  • $command中的其他命令一起工作,但与curl -sI一起,它没有,我已经全部安装了。(如果我在终端中执行命令,它可以工作。)我认为卷曲是问题所在。

我能想到的唯一问题是字符串的终止。快速测试:

#!/bin/sh
command=$(curl -sI https://example.com | grep server -i)
echo "$command"
reply="server: ECS (dcb/7F83)"
echo $command | xxd
echo $reply | xxd
if [ "$command" = "$reply" ]; then
echo "It works!"
else
echo "Of course it does not work."
fi

…显示:

server: ECS (dcb/7FA6)
00000000: 7365 7276 6572 3a20 4543 5320 2864 6362  server: ECS (dcb
00000010: 2f37 4641 3629 0d0a                      /7FA6)..
00000000: 7365 7276 6572 3a20 4543 5320 2864 6362  server: ECS (dcb
00000010: 2f37 4638 3329 0a                        /7F83).
Of course it does not work.

参见额外的0d?这是回车。你需要在比较它之前去掉所有这些东西:

command =$(curl -sI https://*******.com | grep Server | tr -d 'r')

相关内容

  • 没有找到相关文章

最新更新