Sto provando a scrivere un piccolo script semplice per interrogare una connessione 3G, e se la connessione è scesa, avviare una riconnessione.Perché il mio confronto tra stringhe bash di due stringhe identiche è sempre falso?
Il mio problema è nel controllare l'output del comando: due stringhe apparentemente uguali non vengono valutate come uguali. Sono sicuro che c'è un errore di noob qui da qualche parte!
#!/bin/bash
echo "Checking connection"
a="Not connected."
b=$(./sakis3g status --console)
if [[ "$a"!="$b" ]]; then
echo "Strings not equal:"
echo "$a"
echo "$b"
else
echo "Strings equal!!"
fi
L'uscita quando eseguito:
[email protected]:~$ ./test_3g.sh
Checking connection
Strings not equal:
Not connected.
Not connected.
Quando si esegue ./test_3g.sh | cat -A
:
[email protected]:~$ ./test_3g.sh | cat -A
Checking connection$
Strings not equal:$
Not connected.$
Not connected.$
Alla fine non c'è una newline estranea, giusto? – Mehrdad
Prova './test_3g.sh | gatto -A'. Se il tuo 'cat' non supporta l'opzione' -A', prova './test_3g.sh | gatto -v'. –
Non penso ci siano spazi bianchi estranei, ma sarei felice di essere corretto su questo. @ Keith, ho aggiunto l'output dal pipe al cat -A alla domanda. – jozzas