если, elif, else заявление выдает в Bash

Я не могу понять, в чем проблема со следующим if заявление в отношении elif и then. Имейте в виду printf все еще находится в разработке, я просто не смог проверить его еще в заявлении, поэтому, скорее всего, ошибаюсь.

ошибка, которую я получаю:

./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'

и утверждение таково.

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

3 ответов


между elif и [:

elif[ "$seconds" -gt 0 ]

должно быть

elif [ "$seconds" -gt 0 ]

как я вижу, этот вопрос получает много просмотров, важно указать, что синтаксис, чтобы следовать:

if [ conditions ]
# ^ ^          ^

означает, что пробелы необходимы вокруг скобок. Иначе ничего не получится. Это потому что is команды.


у вас есть некоторые проблемы синтаксиса скрипта. Вот исправленная версия:

#!/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 "Unknown parameter"
fi

[ - это команда. Он должен быть отделен пробелом от предыдущего утверждения:

elif [