shell Curl with if陈述式

euoag5mw  于 2022-11-25  发布在  Shell
关注(0)|答案(1)|浏览(105)

你能帮我解决这个代码吗??服务器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

我捕获的信息:

  • 我在ShellCheck中没有得到错误。我知道$command等于$reply,但它无论如何都不会回答我“它工作!”
  • 我也测试过使用/usr/bin/curl
  • 对于$command中的其他命令,它可以工作,但是对于curl -sI,它不能工作,我已经安装了所有的命令。(如果我在终端中执行命令,它可以工作。)我认为curl是问题所在。
4ioopgfo

4ioopgfo1#

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

#!/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')

相关问题