電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
phpは多少理解できるのですが、linuxのシェルスクリプトは皆無です。

以下のphpをシェルスクリプトで書きたいのですが、サンプルソースを頂けないでしょうか。
実行したい事。
(1)外部のurl一覧(改行くぎり)csvを読み込む。
(2)それを1行ずつループで回し、wgetでファイルを取得

//コチラの配列は外部読み込みです。
$URL = array("ttp://aaa.com","ttp://bbb.com","ttp://ccc.com");

foreach($URL as $URL_N)
{
$get_url = "wget -r -nc -A html -R index.html ".$URL_N;
exec($get_url);
}

宜しくお願い致します。

A 回答 (4件)

fileにURL一覧が書かれているとして、bashでは、


for f in $(cat file);do
 wget -options $f
done

URL一覧が数万行もあれば、マシンスペックによって、catでの展開が
つらいかも。
ちなみに、wgetの-iオプションを使えば、shellでループを回す必要がないのだが。
    • good
    • 0

最初の行だけ最後に " があるけど, これは気のせい?


「1行に URL が 1個ある」なら #1 の通りでもいけると思う. sed 1個分だけプロセスが無駄だけど, 気にするほどじゃないでしょう.
やってることは, sed でコマンドラインを組み立てて bash にパイプで送ってるだけ.
    • good
    • 0

wgetを使った事がないので細かいオプションは判りませんが、


それは質問者さんの方でもご存知のようなので省略します:

while read LINE; do
wget -各種引数 $LINE
done

というループでまわして、wgetに処理をさせるように書きます。
変数名はLINEとしてますが、気に入らなければ適宜変えてください。

で、このループを書いたシェルスクリプトを、runme.shという名前だとしたら、
このようにパラメータを記述した別ファイルを読ませながら実行します。

sh runme.sh <パラメータファイル

"<"記号で、記号の右にあるファイルを左にあるコマンドの標準入力として実行できます。
    • good
    • 0

その「外部の url一覧 (改行くぎり) csv」がどういう形式なのか, サンプルを見せてもらえないでしょうか?


sed -e 's/^/wget -r -nc -A html -R index.html /' csv | bash
で終わったりして.

この回答への補足

>その「外部の url一覧 (改行くぎり) csv」がどういう形式なのか, サンプルを見せてもらえないでしょうか?
単純に
ttp://aaa.com"
ttp://bbb.com
ttp://ccc.com

と、1行ずつを改行しています。

補足日時:2009/04/07 13:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!