你能帮我解析一下这个代码吗??服务器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')