変数に格納されたパラメータをWGETに渡す方法

変数に格納されたパラメータをWGETに渡す方法

私はwgetを広く使用するbashスクリプトを書いています。すべての共通パラメータを1つの場所で定義するために、それを変数に保存します。これはコードスニペットです:

useragent='--user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"'
cookies_file="/tmp/wget-cookies.txt"
save_cookies_cmd="--save-cookies $cookies_file --keep-session-cookies"
load_cookies_cmd="--load-cookies $cookies_file --keep-session-cookies"

function mywget {
    log "#!!!!!!!!!# WGET #!!!!!!!!!# wget $quiet $useragent $load_cookies_cmd $@"  
    wget $useragent $load_cookies_cmd "$@"
}

残念ながら動作しません。何とか$useragent、$save_cookies_cmd、$load_cookies_cmd変数にパラメータを保存する正しい方法と、これらの変数をパラメータとしてwgetに渡す方法がありません。

私が望む結果のコマンドラインは次のとおりです。

wget --user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" --load-cookies /tmp/wget-cookies.txt --keep-session-cookies http://mysite.local/myfile.php

編集する:私の最終的な解決策は次のとおりです。

最後に、私のスクリプトは正しく動作します。

useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
useragent_cmd="--user-agent=$useragent"
cookies_file="/tmp/wget-cookies.txt"
save_cookies_cmd="--save-cookies $cookies_file --keep-session-cookies"
load_cookies_cmd="--load-cookies $cookies_file --keep-session-cookies"

function mywget {
    log "#!!!!!!!!!# WGET #!!!!!!!!!# wget $load_cookies_cmd $useragent_cmd $@"  
    wget $load_cookies_cmd "$useragent_cmd" "$@"
}

皆様のご回答ありがとうございます。

ベストアンサー1

http://mywiki.wooledge.org/BashFAQ/050

user_agent='--user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"'
cookies_file="/tmp/wget-cookies.txt"
save_cookies_opts=( --save-cookies "$cookies_file" --keep-session-cookies )
load_cookies_opts=( --load-cookies "$cookies_file" --keep-session-cookies )

function mywget {
    log "#!!!!!!!!!# WGET #!!!!!!!!!# wget $quiet $useragent $load_cookies_cmd $@"
    wget "$user_agent" "${load_cookies_opts[@]}" "$@"
}

wget呼び出しで"$user_agent"。これは非常に重要です。

おすすめ記事