Si el problema de condición en shell
-
06-07-2019 - |
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
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