Bash 脚本创建不需要的文件

Bash 脚本创建不需要的文件

我最终在 DD-WRT 路由器上制作了这个脚本,它创建了两个不需要的文件,我似乎无法理解为什么。我不是脚本天才,尤其是 bash,所以任何帮助将不胜感激。

#!/bin/sh

sleep 30
mkdir /tmp/myvpn; cd /tmp/myvpn

# ... doing stuff...

while [ 1 ]
do
  r1=`wget -q http://ipinfo.io/ip` > /dev/null
  r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null
  if [ $r2 -eq "XX" ] 
    then echo "XX OK" > /tmp/myvpn/result_check_vpn.txt
    else
        echo "XX NOK" > /tmp/myvpn/result_check_vpn.txt
        killall -q openvpn
        sleep 5
        openvpn --config /tmp/openvpncl/openvpn.conf --route-up /tmp/myvpn/route-up.sh --down-pre /tmp/myvpn/route-down.sh --daemon
        sleep 25
        sh /proc/net/ip_conntrack_flush
  fi
sleep 180
done

该脚本在 /tmp/myvpn 中创建两个不需要的文件,名为“country”和“ip”。我一定做错了什么。基本上,该脚本尝试通过检查我是否有效地更改了国家/地区来检查 VPN 是否已正确建立(我有必要执行此检查)。

答案1

这些文件是由这两个命令创建的:

r1=`wget -q http://ipinfo.io/ip` > /dev/null
r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null

好的,第二个是语法错误,但我认为这是一个拼写错误。该wget命令的格式为:

wget http://www.example.com/file

然后它将下载file并将其保存在当前目录中。由于您没有告诉我们您期望发生什么,我猜您想将文件内容保存在变量中。如果是这样,您需要wget使用以下命令来打印到标准输出-O -

r1="$(wget -qO - http://ipinfo.io/ip)"
r2="$(wget -qO - http://ipinfo.io/$r1/country)" 

> /dev/null当然,您不能重定向输出 ( ),因为这意味着不会打印任何内容。

相关内容