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
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top