簡體   English   中英

Bash腳本比較文件大小問題

[英]Bash Script Comparing File Sizes Issue

我正在運行OSX。

因此,我遇到了一個腳本,無法比較本地HD和服務器上的文件大小。 為此,我使用cURL獲取http標頭,並將其修剪為KB大小。 然后,我使用“ stat”來獲取本地文件的大小。

這是我的代碼:

clear
cd "$(dirname "$0")"

Local=$(stat -f "%z" ./Google.png)
Remote=$(curl -sI http://www.google.com/intl/en_com/images/srpr/logo3w.png | grep Content-Length | awk '{print $2}')
declare -i Local
declare -i Remote
echo $Local
echo $Remote

if [ $Local != $Remote ]; then
  echo "Different sizes."
else
  echo "Same size."
fi

無論大小是否相等,我都會得到:

7007
7007
Different sizes.

我真的很絕望,有人可以幫忙嗎?

使用[ $n -eq $k ]比較數字。

curl的輸出的行以回車符+換行符(\\ r \\ n)終止,而不僅僅是換行符(\\ n); 回車被包含在Remote的值中,並引起混亂。 您可以通過tr -d "\\r"管道將其刪除,但是用awk進行操作可能更簡單(就此而言,還可以進行搜索):

Remote=$(curl -sI http://www.google.com/intl/en_com/images/srpr/logo3w.png | awk '/Content-Length/ {sub("\r",""); print $2}')

順便說一句,我認為declare -i命令沒有做任何有用的事情(因為已經設置了本地和遠程)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM