Awk

比較大數字時出錯

  • April 28, 2018

試圖使用這個

#!/bin/bash

SIZE=$(redis-cli info | grep used_memory: | awk -F':' '{print $2}')
MAX=19000000000

if [ "$SIZE" -gt "$MAX" ]; then
   echo 123
fi

但總是得到:“預期的整數表達式”

當我回顯 SIZE 時,我得到一個像 2384934 這樣的值 - 我不必/可以轉換一個值,或者我可以/可以嗎?

redis-cli 資訊的輸出:

# Memory
used_memory:812136
used_memory_human:793.10K
used_memory_rss:6893568
used_memory_rss_human:6.57M
used_memory_peak:329911472
used_memory_peak_human:314.63M
total_system_memory:16760336384
total_system_memory_human:15.61G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:8.49
mem_allocator:jemalloc-3.6.0

編輯:我發現了錯誤 - 我在 awk 命令中使用了 print - 沒有它它可以工作。

SIZE=$(redis-cli info | grep used_memory: | awk -F':' '{$2}')

您使用的數字似乎非常大bash。您可以嘗試以下方法:

#!/bin/bash
SIZE=$(redis-cli info |  awk -F':' '$1=="used_memory" {print int($2/1000)}')
MAX=19000000
if [ "$SIZE" -gt "$MAX" ]; then
   echo 123
fi

引用自:https://unix.stackexchange.com/questions/440573