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當然,您不能重定向輸出 ( ),因為這意味著不會列印任何內容。

相關內容