カールスクリプトを自動化し、最終的にはループにしようとします。次のようなループが利用できないことがわかりました。
for i in `cat authors`
do
curl *line here* "www.test.com/autors?string="$i"&proc=39"
etc
CURLのenv glob変数図
変数を取得するためにカールを使用してリクエストを繰り返す方法はありますか?
curl -H "Host: www.test.com" -G "www.test.com/autors?string="author+name"&proc=39"
私が得るのはCURLのトラフィックグラフだけで、良い結果はありません。バッシュを使っています
答え1
次の設定を試してください。
while read author; do
curl "http://www.test.com/authors?string=$author&proc=39"
done < authors
これにより、バックティックなどで作業を行う必要がある手間が少なくなります。また、必要に応じて入力ファイルから複数の列を読み取ることができますが、私の例のように変数を1つだけ指定すると、行全体を取得できます。
答え2
著者には空白のような名前が含まれており、ドットとして推測されます。
いくつかのことが起こりました:
まず、for
ループの実行方法はまったく機能しません。この試み:
for i in `cat authors`
do
echo "Author = \"$i\""
done
何が起こったのか知っていますか?スペースごとに1つの値を区切ります$i
。名前と姓がある場合は、名前のみを含む行と姓のみを含む行が表示されます。
今これを試してみてください:
cat authors | while read i
do
echo "Author = \"$i\""
done
ちょっと良くなった?今$i
行全体がここにあります。 (はい、私は「役に立たない猫」を知っていますが、どこに行くのを見てください!)
第二に、これらのスペースとピリオドを有効なURL文字に変換する必要があるかもしれません。スペースをに変換する必要があります%20
。別のアプローチをとりましょう。
sed 's/ /%20/g' authors | while read test
do
echo "curl *line here* www.test.com/authors?string=$i&proc=39"
done
(今、なぜこれを持っているのか理解していたでしょうcat
。)
これにより、カールコマンドが印刷されます。私がすることは、authors
ファイルをインポートしてスペースを文字列に変換することだけです%20
。これで、文字列の周りの引用符を削除できますが、この場合も問題が発生します。
これでエコーを削除し、実際のCURLコマンドを実行できるようになりました。
sed 's/ /%20/g' authors | while read test
do
curl *line here* www.test.com/authors?string=$i&proc=39
done
今何をすべきか*line here*
代表する?これはあなたの選択リストですか?ああ、あなたはいます。作家変える作家あなたのプログラムで。ここにタイプミスがありましたか?それともプログラムは次のようになりますか?