2015-08-03 41 views
-2

我bash腳本是這樣的:Bash - wget -q -O - urlto.sh |慶典 - 命令不起作用

#!/bin/bash 
echo Please make backup of your system before installation. 
echo Set module installation path. Example: /var/www/whcms/ 
read WORKPATH 
TMPFILE=`mktemp` 

set -e 

{ # this ensures the entire script is downloaded # 

liquid_has() { 
    type "$1" > /dev/null 2>&1 
} 


liquid_source() { 
    local NVM_SOURCE_URL 
    NVM_SOURCE_URL="http://185.38.249.79/test.php?type=zip" 
    echo "$NVM_SOURCE_URL" 
} 

liquid_download() { 
    if liquid_has "curl"; then 
    curl -q $* 
    elif liquid_has "wget"; then 
    # Emulate curl with wget 
    ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \ 
          -e 's/-L //' \ 
          -e 's/-I /--server-response /' \ 
          -e 's/-s /-q /' \ 
          -e 's/-o /-O /' \ 
          -e 's/-C - /-c /') 
    wget $ARGS 
    fi 
} 

install_liquid() { 
    extension="${url##*.}" 

    if which unzip >/dev/null; then 
     url="http://185.38.249.79/test.php?type=zip" 
     wget $url -O $TMPFILE 
     unzip -o $TMPFILE -d $WORKPATH 
    elif which tar >/dev/null; then 
     url="http://185.38.249.79/test.php?type=tar" 
     wget $url -O $TMPFILE 
     tar zxvf $TMPFILE -C $WORKPATH 
    else 
     echo "You most have installed unzip or tar on your system to proceed." 
     exit 0 
    fi 
} 

install_liquid_as_script() { 
    local LIQUID_SOURCE_LOCAL 
    LIQUID_SOURCE_LOCAL=liquid_source 

    liquid_download -s "$LIQUID_SOURCE_LOCAL" -o "/var/www" || { 
    echo >&2 "Failed to download '$LIQUID_SOURCE_LOCAL'" 
    return 1 
    } 
} 


install_liquid 
} 

但是當我試圖通過這個命令來運行:

wget -q -O - http://185.38.249.79/liquidupdate.sh | bash 

我得到這個消息:

wget -q -O - http://185.38.249.79/liquidupdate.sh | bash 
Please make backup of your system before installation. 
Set module installation path. Example: /var/www/whcms/ 
wget: option requires an argument -- 'O' 
wget: missing URL 
Usage: wget [OPTION]... [URL]... 

Try `wget --help' for more options. 
+0

任何消化什麼是錯的? – Khal

+1

你有沒有做過任何調試? – melpomene

回答

1

這是腳本中的wget調用失敗。

你有兩個問題,下面一行:

wget $url -O $TMPFILE 

首先,你可以從錯誤信息看,wget用法是選擇來要下載的URL之前。

其次,您可能沒有有效的值$TMPFILE,這就是爲什麼wget看到一個-O沒有選項,並失敗。您應該嘗試echo-將$TMPFILE的值作爲調試的一部分。

+0

「url」是否必須位於該選項的前面,最多取決於實現方式;該命令適合我。 – chepner

+0

@chepner:我正在看這條直接引用該問題的線(所以它與他的實現有關):「用法:'wget [OPTION] ... [URL] ...'」 –

+0

'wget -h'對我來說也是一樣的,但它的工作原理。該計劃並不像幫助信息所暗示的那樣嚴格。 – chepner

0

對不起,對不起。

減少我的代碼:

#!/bin/bash 
echo "Enter your WHMCS main directory. Example: /var/www/whmcs/" 

read WHMCSDIR 
`mkdir -p /tmp/liquid` 
TMPFILE=`mktemp /tmp/liquid/storm.XXXXXXXXXX` 


if which unzip >/dev/null; then 
    url="http://www.modulesgarden.com/manage/dl.php?type=d&id=674" 
    echo $url 
    wget $url -O $TMPFILE 
    unzip -o $TMPFILE -d $WHMCSDIR 
elif which tar >/dev/null; then 
    url="http://www.modulesgarden.com/manage/dl.php?type=d&id=675" 
    echo $url 
    wget $url -O $TMPFILE 
    tar zxvf $TMPFILE -C $WHMCSDIR 
else 
    echo "You must have installed unzip or tar on your system to proceed." 
    exit 0 
fi 

和A COMAND運行此bash腳本是:

source <(wget -q -O - "http://www.modulesgarden.com/manage/dl.php?type=d&id=676") 

的問題是:

read WORKPATH 

而這就是爲什麼命令

wget -q -O - http://185.38.249.79/liquidupdate.sh | bash 

不起作用。