[: Operador inesperado en la programación de shell [duplicado]

Resuelto kit.yang asked hace 14 años • 7 respuestas

Mi código:

    #!/bin/sh
    #filename:choose.sh
    read choose
    [ "$choose" == "y" -o "$choose" == "Y" ] && echo "Yes" && exit 0
    [ "$choose" == "n" -o "$choose" == "N" ] && echo "No"  && exit 0
    echo "Wrong Input" && exit 0

Pero cuando ejecuto

    sh ./choose.sh

terminal me avisa que

   [: 4: n: :Unexpected operator
   [: 5: n: :Unexpected operator

¿Hay algún error en mi script bash? ¡Gracias!

kit.yang avatar Aug 05 '10 08:08 kit.yang
Aceptado

No hay ningún error en su script bash . Pero lo estas ejecutando con shque tiene una sintaxis menos extensa

Por lo tanto, necesitarás ejecutar bash ./choose.shen su lugar o convertir el script para usar shsolo comandos compatibles con POSIX, como =entre cadenas en lugar de ==.

Wolph avatar Aug 05 '2010 01:08 Wolph

POSIX sh no entiende ==la igualdad de cadenas, ya que eso es un bash -ismo. Úselo =en su lugar.

Las otras personas que dicen que sh no admite corchetes están equivocadas, por cierto.

Nietzche-jou avatar Aug 05 '2010 01:08 Nietzche-jou