6

ダウンロードしたファイルのURLと、保存先のファイルのパスを渡せるようにする必要があります。

CURLの-Oと-oと関係があると思いますが、理解できないようです。

たとえば、これは私が現在bashスクリプトで使用しているものです。

#!/bin/sh

getsrc(){
    curl -O $1
}

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz

どうすればcurlステートメントを変更して実行できるようになりますか

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz /usr/local

ファイルを/usr/ localに保存しますか?

4

2 に答える 2

7

これをスクリプトにする場合は、不測の事態に備えて準備ができていることを確認する必要があります。

getsrc() {
    ( cd "$2" && curl -O "$1" )
}

これは、疑問符、星、スペース、タブ、改行などのシェルメタ文字が含まれている場合に備えて、パラメーターを引用することを意味します。

また、ターゲットディレクトリが存在しない場合に、コマンドとコマンド&&の間に演算子を使用することも意味します(使用しない場合でも、curlはエラーなしでダウンロードされますが、ファイルは間違った場所に配置されます!)cdcurl

その関数は2つの引数を取ります:

  • ダウンロードする必要のあるデータへのURL。
  • データを保存するローカルパス(URLに基​​づくファイル名を使用)

パスではなくローカルファイル名を指定するには、より単純なものを使用します。

getsrc() {
    curl "$1" > "$2"
}
于 2009-04-10T06:17:10.897 に答える
6

うーん...あなたがおそらくやりたいことは

getsrc(){
    ( cd $2 > /dev/null ; curl -O $1 ; ) 
}

-O(大文字のO)は、リモートファイルのような名前のローカルに格納することを示しますが、リモートパスコンポーネントは無視します。特定のディレクトリに保存できるようにするための最も簡単な方法は、そのディレクトリにcdすることです...そして私はサブシェルでそれを行うので、ディレクトリの変更は伝播しません

于 2009-04-09T23:29:38.957 に答える