私はURLを使ってファイルをダウンロードできる非常に基本的なスクリプトを書いています。これは私のスクリプトです。
#!/bin/sh
# A script that downloads a file based on url
function filedl() {
echo "What is the url for the file?"
read FILEURL
wget $FILEURL
echo "Download complete"
}
filedl
私ができることを望むのは、ダウンロードしたファイルをダウンロードしたらすぐに見つけて、スクリプトの他のコマンドまたは機能を使用して自動的に事前定義されたディレクトリに移動することです。
出力を変数にパイプする方法についていくつかのスレッドを読みましたが、私のスクリプトでこれを行う方法を知りませんでした。私が読んだトピックは次のとおりです。
- シェルスクリプト - プログラムや関数の出力を変数にパイプする方法は? - UnixとLinuxスタックの交換
- シェルスクリプト - コマンド出力を変数に割り当てると奇妙な結果が発生する - Think Tank 101 - CC copyrightベースのQ&A共有プラットフォーム
- bash - 出力をシェルの変数にリダイレクトする方法は? - スタックオーバーフロー
次のような内容で新しい変数を作成してみましたが、うまくいかないようです。
NEWFILE=$(wget $FILEURL)
また、修正された関数呼び出しを使用してスクリプトを変換してみました。
NEWFILE=$(filedl)
<--これもあまりないと思います。
最後に、コマンドを関数から移動し、上記の変数定義の試みのバリエーションとともに各コマンドをリストしました。私はまだ何をすべきかわかりません。
私はシェルスクリプトに初めて触れたので、明らかに知っておくべきことがない場合は謝罪します。
答え1
変数にファイルをキャプチャして不必要にファイル全体をメモリに入れる代わりに、wget
's --output-document
/-O
フラグと次の2つのバリエーションのいずれかを使用します。
wget -O /path/to/file ... http://example.com/foobar
wget -O - ... http://example.com/foobar > /path/to/file
.../path/to/file
目的のパス+ファイル名がある場所です。 (そして...
使用できる他のフラグやパラメータも同じです。)
または、ダウンロードしたファイルのデフォルト名を保持するには、またはを--directory-prefix
使用して-P
ファイルを保存するディレクトリを指定します。
wget -P /some/path ... http://example.com/foobar