wget エラーでシェル スクリプトが壊れます - それを防ぐにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/535623

  •  22-08-2019
  •  | 
  •  

質問

ダウンロードするさまざまな種類のファイルへのリンクがたくさんある巨大なファイルがあります。各行は次のような 1 つのダウンロード コマンドです。

wget 'URL1'

wget 'URL2'

...

そしてそれらは何千もあります。

残念ながら、一部の URL は非常に見苦しくなります。たとえば、次のとおりです。http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.docブラウザでは正常に開きますが、wget が混乱します。

エラーが発生します:

./tasks001.sh:35行目:予期しないトークン「1」付近で構文エラーが発生しました

./tasks001.sh:35行目:「wget」http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc''

ダウンロードするものを指定する URL と「URL」の両方の方法を試しました。

このようなスクリプトを無人で実行する方法はありますか?ダウンロードできなかったファイルをスキップするだけであれば問題ありません。

役に立ちましたか?

解決

URL は一重引用符 (') ではなく二重引用符 (") で囲む必要があると思います。

それでもうまくいかない場合は、括弧文字をエスケープしてみてください ( そして ) バックスラッシュを付けると: \( そして \)

どのシェルを使用していますか?バッシュ?ズシュ?

他のヒント

シェルを使用しないでください。

URL を何らかのファイル (my_urls.lst としましょう) に保存し、次の操作を実行します。

wget -i my_urls.lst

Wget は引用などを独自に処理します

これはあなたの質問に正確に答えているわけではありませんが、次のとおりです。

次のコマンドはどちらも bash シェルで直接動作します。

wget "http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc"

そして

wget 'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc'

それらのいずれかがうまくいくかどうかを確認してもらえますか?

起こっているように見えるのは、シェルが ( 文字を使用して何かを行っていることです。URL の前後に一重引用符 ' の代わりに二重引用符 ' を使用してみます。

エラーを抑制したい場合は、UNIX では >/dev/null を使用して標準出力をリダイレクトするか、2> /dev/null を使用して標準エラーをリダイレクトします。他のオペレーティング システムでは、別の動作になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top