Falta el script de bash ']' [cerrado]


81

Recibo un error ./test.sh: línea 13: [: missing `] 'en el archivo test.sh Intenté usar corchetes y otras opciones como -a o verificando el tamaño del archivo p1 pero el error es siempre está ahí y la instrucción else siempre se ejecuta independientemente de la entrada dada. Incluso lo intenté eliminando el; en la línea 13 pero no ayudó.

test.sh

#!/bin/bash
echo "Enter app name"
read y
$y &
top -b -n 1 > topLog.log
#-w checks for the whole word not and sub string from that word
grep -w "$y" topLog.log > p1
#-s option checks if the file p1 is present or not
if [ -s "p1"];  #line 13
then 
    echo "Successful "
else
    echo "Unsuccessful"
fi
rm p1

Soy nuevo en bash scripting, así que si hay algún error tonto, discúlpeme.

Respuestas:



38

Recibí este error al intentar usar el &&operador dentro de corchetes simples como [ ... && ... ]. Tuve que cambiarme a [[ ... && ... ]].


También estaba usando && con if y resolvió mi problema.
Praveen Patel

Estaba usando el operador == y tuve el mismo problema, cambiar al corchete doble ayudó, ¡gracias!
Vishnu Nair



0

Si creó su script en Windows y desea ejecutarlo en una máquina Linux, y está seguro de que no hay ningún error en su código, instale dos2unix en la máquina Linux y ejecútelo dos2unix yourscript.sh. Luego, ejecute el script.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.