まず、ファイルサイズ情報を取得するためにカールを使用します。
fileSize=$( curl http://linux.die.net/include/sys/ioctl.h --head | grep Content-Length | awk '{print $2}')
echo $fileSize
1825年
その後、ファイルをダウンロードしてサイズを確認します。
downloadedSize=$(wc -c ioctl.h | awk '{print $1}')
echo $downloadedSize
1825年
その後、この変数を比較したいと思います。しかし、条件は常に偽です。
if [[ "$fileSize" == "$downloadedSize" ]]; then
echo "success"
else
echo "fail"
fi
私はこれを試しました
if [ "$fileSize" == "$downloadedSize" ]; then
if [ $fileSize == $downloadedSize ]; then
if [[ $fileSize == $downloadedSize ]]; then
代わり-eq
に==
何が問題なの?
ベストアンサー1
ランニング:
$ echo "$fileSize" | od -c
0000000 1 8 2 5 \r \n
0000006
$ echo "$downloadedSize" | od -c
0000000 1 8 2 5 \n
0000005
最初のケースでは、キャリッジリターンが値に追加され(httpヘッダーにdos行終端がある:CRLF)、2番目の変数は正しいことを示しています。 CR(\r
)を削除するとテストが機能します。たとえば、
fileSize=$( curl http://linux.die.net/include/sys/ioctl.h --head |
awk '/Content-Length/ {gsub("\r",""); print $2; exit}')