2012-02-28 4 views
2

Linuxでは、http:// terminalの変数をexport http_proxy=http://x.x.x.x:xで変更できます。しかし、私はスクリプトでそれをやりたいだから私は次のコードを持っています:Linux Bashスクリプティングプロキシ変数

#!/bin/bash 

FILE="_reliable_list.txt" 

for line in $(cat $FILE) 
do 
    proxy="http://$line" 
    export http_proxy=$proxy 
done 

最後に、変数http_proxyの値をチェックするとnullになります。 私はファイルプロキシアドレスから読み込み、http_proxy変数にエクスポートし、wgetで使用したいと思います。単に私はこのコードを自動化したい:

export http_proxy=http://x.x.x.x:x 
wget mysite.com 

私は非常にうれしいです。

+0

は、なぜあなたは、ループ内のプロキシを設定するのですか?入力ファイルの最後の行は何ですか? – perreal

+0

私は新しいプロキシアドレス – user873286

答えて

3

あなたは、URLを含む新しいファイルと仮定すると、wgetの呼び出しを埋め込むためのスクリプトを変更することができます:私は常に「読み取りながら、」使用

#!/bin/bash 

URLS="_url_list.txt" 
FILE="_reliable_list.txt" 

i=1 
for line in $(cat $FILE) 
do 
    export http_proxy="http://$line" 
    wget $(head $i $URLS | tail -1 | tr -d '\n') 
    let i++ 
done 
+0

このエラーが発生します:ポート番号が正しくありません.y URL http://217.196.113.81:8080 – user873286

+0

@ user873286、ここで動作しますが、エラーメッセージに「URL」が表示されますか?あなたはこれを実行しようとすることができます: "export http_proxy = 217.196.113.81:8080; wget google.com" – perreal

+0

はいそれは動作しますが、ファイルから読み込むと、ポートが正しくないと言われます。キャリッジや改行文字を削除する方法を知っていますか? – user873286

2

まず、ファイルを実行する代わりにsourceにします。 exportを使用すると、呼び出し元のシェルには伝達されません。

第2に、コードがあまり良くありません。 catではなく、bashのファイル読み取り機能を使用する必要があります。また、あなたのコードは、そのファイルの最後の行を選択し、それをプロキシとして使用します。あなたがしたいことは確かですか?その場合は、tailを使用してください。あなたは、単にコマンドラインでこれを行うことができます

+0

のすべての要求が必要なので、すべての行を取得し、それをプロキシアドレスとして使用してwgetを呼び出す場合は、ファイルの最後までこのプロセスを続行してください – user873286

+0

@ user873286:そのようにするには、ループ内に 'wget -c'を呼び出す必要があります。 – cha0site

+0

はい私は知っていますが、それがうまくいくかどうかを確認する前に、wget -cで十分ですか? – user873286

0

:エクスポートされますし

. ./script.sh 

:スクリプトで線の上に持っている場合

export http_proxy="$(tail -1 _reliable_list.txt)" 

OR他にはscript.shは、このようにで実行すると言います現在のシェルの変数。

2

代わりに猫のFILEのを。

ここで違いがあるのか​​、それとも違う理由があるのか​​分かりません。

例:

while read LINE 
do 

    export http_proxy="http://${LINE}" 

done < $INPUT_FILE 
+0

問題の接線の種類はありますが、良いアドバイスは+1です。入力ファイルに空白(改行以外)があると、違いがあります:for-loopsは単語分割の対象です。 'read'はできません。 –

+0

これらのような書き込みの場合(場合でも):export http_proxy: "http:// $ LINE"; wget $ URL。エラーが表示されます::不良ポート番号.y URL http://217.196.113.81:8080 – user873286

+0

申し訳ありません。変数を引用符で囲む必要があるかもしれません。上記の例を変更しました。実際には、perrealは前の例でそれを行いました – mmrtnt

関連する問題