【发布时间】:2021-03-20 08:43:36
【问题描述】:
我正在尝试创建我的第一个 bash 脚本。此脚本的目标是检查我的公共 IP 更改的速率。这是一个相当简单的脚本。首先,它检查新地址是否与旧地址不同。如果是这样,那么它应该将旧的更新为新的,并打印出日期以及新的 IP 地址。
此时我已经创建了一个简单的脚本来完成此操作。但我有两个主要问题。
首先脚本继续打印出 IP,即使它没有改变,我已经用 CUR_IP 更新了 PREV_IP。
我的第二个问题是我希望输出直接到文件而不是输出到终端。
出于测试目的,当前间隔设置为 1 秒。这将在最终产品中更改为更高的间隔。
#!/bin/bash
while true
PREV_IP=00
do
CUR_IP=$(curl https://ipinfo.io/ip)
if [ $PREV_IP != "$CUR_IP" ]; then
PREV_IP=$CUR_IP
"$(date)"
echo "$CUR_IP"
sleep 1
fi
done
我也得到了一个非常奇怪的输出。我已将我的公共 IP 编辑为 xx.xxx.xxx.xxx:
Sat 20 Mar 09:45:29 CET 2021
xx.xxx.xxx.xxx
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--
【问题讨论】:
-
请先将您的脚本粘贴到shellcheck.net,然后尝试实施那里提出的建议。
-
顺便说一句:
sh(Bourne-shell) 通常不是bash(Bourne-again shell)。 -
我已将其更新为 bin/bash。我会检查拼写检查器!
-
当你说“得到一个非常奇怪的输出”时,你到底是什么意思?
-
提示:
curl -s.
标签: bash