Se problema di condizione nella shell
-
06-07-2019 - |
Domanda
Sto cercando di rilevare se una stringa contiene un trattino ma nulla sembra funzionare per me (sono nuovo a shell).
if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi
Soluzione
if [ "x$m" = "x-" ]; then
echo "is a dash"
else
echo "is not a dash"
fi
Utilizza il confronto delle stringhe, cita tutto ed evita la possibile confusione dell'opzione della riga di comando [
(su alcune shell non abbastanza Posix) se $ m
inizia con un
Altri suggerimenti
-eq
è usato per testare l'uguaglianza di numeri interi. Per verificare l'uguaglianza delle stringhe, utilizzare invece =
:
if [ "$m" = - ]
Per ulteriori dettagli, consultare la pagina man per test
.
L'operatore '-eq' esegue un confronto aritmetico. È invece necessario utilizzare l'operatore '='. vale a dire:
se test " $ m " = '-'; poi echo "è un trattino"; altro echo "non ha trattino"; fi