Pregunta

Estoy tratando de detectar si una cadena contiene un guión pero nada parece funcionar para mí (soy nuevo en shell).

if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi
¿Fue útil?

Solución

if [ "x$m" = "x-" ]; then
    echo "is a dash"
else
    echo "is not a dash"
fi

Utiliza la comparación de cadenas, cita todo y evita posibles confusiones de cambio de línea de comando [ (en algunos shells que no son del todo Posix) si $ m comienza con un - .

Otros consejos

-eq se usa para probar la igualdad de los enteros. Para probar la igualdad de cadena, use = en su lugar:

if [ "$m" = - ]

Consulte la página de manual de test para obtener más detalles.

El operador '-eq' realiza una comparación aritmética. Necesita utilizar el operador '=' en su lugar. es decir:

si prueba " $ m " = '-'; entonces     echo " es un guión " ;; más     echo "no tiene guión" fi

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top