Я получаю ошибку синтаксиса ошибки рядом else
Вы можете использовать http://www.shellcheck.net/ для проверки вашего синтаксиса:
$ shellcheck myscript
Line 1:
if [ -z $loc ] then
^-- SC1010: Use semicolon or linefeed before 'then' (or quote to make it literal).
Line 2:
if [uname -a| grep 64 >/dev/null] then
^-- SC1009: The mentioned parser error was in this if expression.
^-- SC1073: Couldn't parse this test expression.
^-- SC1035: You need a space after the [ and before the ].
^-- SC1009: Use 'if cmd; then ..' to check exit code, or 'if [[ $(cmd) == .. ]]' to check output.
^-- SC1035: You are missing a required space here.
^-- SC1072: Fix any mentioned problems and try again.
$
Исправление очевидных ошибок (отсутствует ;
s и пробелы дает:
if [ -z $loc ]; then
if [ uname -a | grep 64 >/dev/null ] then
sdir=$KALDI_ROOT/tools/srilm/bin/i686-m64
else
sdir=$KALDI_ROOT/tools/srilm/bin/i686
fi
if [ -f $sdir/ngram-count ]; then
echo "Using SRILM language modelling tool from $sdir"
export PATH=$PATH:$sdir
else
echo "SRILM toolkit is probably not installed.
Instructions: tools/install_srilm.sh"
exit 1
fi
fi
А также:
$ shellcheck myscript
Line 2:
if [ uname -a | grep 64 >/dev/null ]; then
^-- SC1009: The mentioned parser error was in this if expression.
^-- SC1073: Couldn't parse this test expression.
^-- SC1009: Use 'if cmd; then ..' to check exit code, or 'if [[ $(cmd) == .. ]]' to check output.
^-- SC1072: Fix any mentioned problems and try again.
$
Вы можете исправить оставшиеся ошибки самостоятельно.
ShellCheck - инструмент статического анализа сценария оболочки
ShellCheck - это инструмент GPLv3, который выдает предупреждения и предложения для сценариев оболочки bash/sh:
Снимок экрана терминала, на котором показаны проблемные строки сценария оболочки.
Цели ShellCheck:
Чтобы указать и прояснить типичные проблемы синтаксиса новичка, которые заставляют оболочку выдавать загадочные сообщения об ошибках.
Указать и прояснить типичные семантические проблемы промежуточного уровня, которые заставляют оболочку вести себя странно и нелогично.
Чтобы указать на тонкие предостережения, угловые случаи и ловушки, которые могут привести к сбою в противном случае работающего сценария опытного пользователя в будущем.
Source ShellCheck