我已声明了两个数字变量但无法比较它们
remote_file_size=$(curl -sI $URL | grep -i content-length | awk '{print $2}')
local_file_size=$(ls -l $file_location | awk '{print $5}')
if [ "$local_file_size" -eq "$remote_file_size" ]; then
echo "Database up to date. Update not required"
else
echo "Database needs to be updated! Downloading newer version"
wget --continue -O $file_location $URL
fi
我也试过了,
if [[ "$local_file_size"="$remote_file_size" ]];
if [[ "$local_file_size"=="$remote_file_size" ]];
if [[ $local_file_size==$remote_file_size ]];
if [[ $local_file_size == $remote_file_size ]];
答案 0 :(得分:2)
curl
因直接从HTTP响应输出不可见但有害的回车而臭名昭着。这就是为什么你得到这个weird, wrapped message:
")syntax error: invalid arithmetic operator (error token is "
您可以使用tr
# v-- Here
remote_file_size=$(curl -sI $URL | tr -d '\r' | grep -i content-length | awk '{print $2}')
答案 1 :(得分:1)
您可能会发现将变量排版为整数有用:
$ typeset -i a="123"
$ typeset -i b="242"
$ [ $a -lt $b ] && echo 'a < b' || echo 'a >= b'
a < b
$ a=545
$ [ $a -lt $b ] && echo 'a < b' || echo 'a >= b'
a >= b