- Ubuntu 10.10
- GNU bash, versione 4.1.5 (1) -release (i686-pc-linux-gnu)
- redis-cli fornito con Redis versione 2.0.0
Questo script funziona:
#! /bin/bash
set -e
f=$(echo 'bgrewriteaof_in_progress:0' | grep bgrewriteaof_in_progress | cut -d':' -f2)
test "${f}" = "0" && echo y || echo n
echo $f
stampe:
y 0
Questo script non funziona:
#! /bin/bash
set -e
f=$(redis-cli info | grep bgrewriteaof_in_progress | cut -d':' -f2)
test "${f}" = "0" && echo y || echo n
echo $f
stampe:
n 0
Com'è possibile? (Nota che echo $f stampe 0, quindi il risultato è lì.)
echo "<<$f>>"sarebbe visualizzato come>>0nel tuo caso (cioè il suffisso ha sovrascritto il prefisso a causa del CR finale). Puoi anche esaminare i byte non elaborati:printf %s "$f" | xxd(o od , HD , hexdump ecc. al posto di xxd ).