sintaxis - Script Bash-if, elif, else sentencia problemas
shell script linux if condition (3)
Falta un espacio entre elif
y [
:
elif[ "$seconds" -gt 0 ]
debiera ser
elif [ "$seconds" -gt 0 ]
Como veo que esta pregunta tiene muchas vistas, es importante indicar que la sintaxis a seguir es:
if [ conditions ]
# ^ ^ ^
lo que significa que se necesitan espacios alrededor de los corchetes . De lo contrario, no funcionará. Esto es porque [
sí mismo es un comando.
Esta pregunta ya tiene una respuesta aquí:
Parece que no puedo resolver cuál es el problema con la siguiente declaración if
en relación con el elif
y then
. Tenga en cuenta que printf
aún está en desarrollo. Todavía no he podido probarlo en la declaración, por lo que es más que probable que esté equivocado.
El error que estoy obteniendo es:
./timezone_string.sh: line 14: syntax error near unexpected token `then''
./timezone_string.sh: line 14: `then''
Y la declaración es así.
if [ "$seconds" -eq 0 ];then
$timezone_string="Z"
elif[ "$seconds" -gt 0 ]
then
$timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
else
echo "Unknown parameter"
fi
Usted tiene algunos problemas de sintaxis con su script. Aquí hay una versión fija:
#!/bin/bash
if [ "$seconds" -eq 0 ]; then
timezone_string="Z"
elif [ "$seconds" -gt 0 ]; then
timezone_string=$(printf "%02d:%02d" $((seconds/3600)) $(((seconds / 60) % 60)))
else
echo "Unkown parameter"
fi
[
es un comando. Debe estar separado por espacios en blanco de la declaración anterior:
elif [