私は Stackoverflow を初めて使用し、bash スクリプトもかなり初めて使用するので、そのようなばかげた質問をすることをお許しください。ここで多くの回答を実際に閲覧しましたが、何もうまくいかないようです。
この小さなスクリプトを作成して、wordpress.org の最新バージョンをチェックし、スクリプトがある場所と同じディレクトリにそのファイルが既にあるかどうかを確認しようとしています。
#!/bin/bash
function getVersion {
new=$(curl --head http://wordpress.org/latest.tar.gz | grep Content-Disposition | cut -d '=' -f 2)
echo "$new"
}
function checkIfAlreadyExists {
if [ -e $new ]; then
echo "File $new does already exist!"
else
echo "There is no file named $new in this folder!"
fi
}
getVersion
checkIfAlreadyExists
出力が次のように機能します。
jkw@xubuntu32-vb:~/bin$ ./wordpress_check
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
wordpress-3.4.1.tar.gz
in this folder! named wordpress-3.4.1.tar.gz
jkw@xubuntu32-vb:~/bin$
したがって、curl&grep&cut で正しいファイル名を取得できますが、変数に何か問題があります。5行目で印刷すると問題ないように見えますが、12行目で印刷するとおかしくなります。また、if ステートメントが機能しません。同じディレクトリにファイルがあります。
curl --head の結果を出力するとhttp://wordpress.org/latest.tar.gz | grep Content-Disposition | テキストファイルで -d '=' -f 2 をカットすると、最後に新しい行が表示されるようです。これが問題でしょうか? コマンドを xdd にパイプすると、次のようになります。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0000000: 776f 7264 7072 6573 732d 332e 342e 312e wordpress-3.4.1.
0000010: 7461 722e 677a 0d0a tar.gz..
..そして、私はそれを理解することはできません。
ここで多くの同様の質問で提案されているように、コマンドトラフtr '\n' '\0'またはtr -d '\n'をパイプしようとしましたが、何もしないようです。何か案は?
PS: 行がどこにあるのかも気になります..
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
..私のシェル出力に来てください。ターミナルでコマンドcurl --head http://wordpress.org/latest.tar.gzだけを実行すると、出力にこのような行がありません。