Parece que no puedo resolver cuál es el problema con la siguiente ifdeclaración en relación con el elify then. Tenga en cuenta printfque todavía está en desarrollo. Simplemente no he podido probarlo todavía en la declaración, por lo que es muy probable que esté equivocado.
El error que obtengo es:
./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'
Y la afirmació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
bash
if-statement
StuStirling
fuente
fuente

thendeclaración enifyelifpero no enelse, y también en general.Respuestas:
Falta un espacio entre
elify[:debiera ser
Como veo que esta pregunta está obteniendo muchas vistas, es importante indicar que la sintaxis a seguir es:
lo que significa que se necesitan espacios alrededor de los corchetes . De lo contrario, no funcionará. Esto se debe a que
[sí mismo es un comando.La razón por la que no está viendo algo así como
elif[: command not found(o similar) es que después de verifythen, la cáscara está buscando, ya seaelif,elseofi. Sin embargo, encuentra otrothen(después del formato incorrectoelif[). Solo después de haber analizado la declaración, se ejecutará (y se generará un mensaje de error comoelif[: command not found).fuente
$ man [if test "$seconds" -eq 0; then ... fies equivalente aif [ "$seconds" -eq 0 ];then ... fi ]. @LeiYangman testes lo que realmente estás buscandoTiene algunos problemas de sintaxis con su script. Aquí hay una versión fija:
fuente
bash"si-entonces-otro" que encontré fácilmente en stackexchange ... gracias.#!/bin/sh.#!/bin/shpero no tiene que hacerlo.shse puede usar en su lugar para una mayor compatibilidad (no todas las distribuciones * nix tienen bash como shell predeterminado (algunas tienen ksh o ash pero la mayoría de ellas dependen del estándarshpara funcionar). Además, si bash es específico o funciones avanzadas que no se está utilizando en la secuencia de comandos a continuación, 'sh' se debe utilizar como el intérprete (una razón más por ello), ya que puede manejar el guión por sí mismo.[es un comando (o un incorporado en algunos shells). Debe estar separado por espacios en blanco de la declaración anterior:fuente
type -a [ver eso.Te recomendaría que eches un vistazo a los conceptos básicos de acondicionamiento en bash.
El símbolo "[" es un comando y debe tener un espacio en blanco antes. Si no asigna espacios en blanco después de su elif, el sistema interpreta elif [ como un comando particular que definitivamente no es lo que desearía en este momento.
Uso:
En resumen, edite su segmento de código para:
Estaría bien sin errores de compilación. Su segmento de código final debería verse así:
fuente
Falta espacio entre
elify[descansar su programa es correcto. necesita corregirlo y verificarlo. Aquí está el programa fijo:enlace útil relacionado con esta declaración bash if else
fuente