比较Linux中的两个数字变量

时间:2017-07-21 01:41:26

标签: bash shell

我已声明了两个数字变量但无法比较它们

  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 ]];

2 个答案:

答案 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