Intereting Posts
Встроенное устройство, раздел журнала, какая файловая система более устойчива и использует меньше операций чтения / записи? Со временем степень сжатия gz улучшается? Увеличить пространство каталога / usr в Cent OS Есть ли способ иметь NPTv6 с отслеживанием соединений в Linux? Проблемы с настройкой TigerVNC и межсетевого экрана 100.0% sy с плохой производительностью диска Могу ли я использовать один и тот же двоичный файл в Linux, * BSD и Illumos? Проверьте, содержит ли переменная только то, что я хочу, и ничего больше Как найти выражения? Как написано ядро? bash syntax – команда обертывания внутри sudo :: tail logs до тех пор, пока строка не будет найдена с таймаутом с использованием Terraform Как проверить скорость DNS? почему bash increment: `n = 0; ((n ++));` return error? Разрешение только для записи для каталога не позволяет переименовывать (перемещать) файлы внутри? Установка HHVM на centos 6.5

Синтаксическая ошибка «elif» неожиданное ожидание

я отправляю новый вопрос в bugfix для моего кода.

if [ -f /etc/centos-release ]; then OS="CentOs" VERFULL=$(sed 's/^.*release //;s/ (Fin.*$//' /etc/centos-release) VER=${VERFULL:0:1} # return 6 or 7 elif [ -f /etc/lsb-release ]; then OS=$(grep DISTRIB_ID /etc/lsb-release | sed 's/^.*=//') VER=$(grep DISTRIB_RELEASE /etc/lsb-release | sed 's/^.*=//') elif [ -f /etc/os-release ]; then OS=$(grep -w ID /etc/os-release | sed 's/^.*=//') VER=$(grep VERSION_ID /etc/os-release | sed 's/^.*"\(.*\)"/\1/') else OS=$(uname -s) VER=$(uname -r) fi 

Здесь elif [ -f /etc/lsb-release ]; then elif [ -f /etc/lsb-release ]; then код показывает ошибку.

Если shell сообщает об этой ошибке в 5-й строке сценария, который вы опубликовали, должна быть какая-то невидимая ошибка с оператором then в первой строке.

Вы можете просмотреть свой скрипт с помощью команды cat -A чтобы увидеть, есть ли в строке случайные символы ALT или другие непечатаемые символы. cat -A будет отображать символы cat -A строки как $ в конце каждой строки, управляющие символы с префиксом ^ и непечатаемые символы с 8-м битом, установленным с префиксом M- . Например, символы табуляции будут отображаться как ^I

Вывод cat -A может выглядеть немного неопрятно, но это отличный способ убедиться, что нет непечатных символов там, где их не должно быть.

Этот fragment сценария отлично работает для меня. Как отмечает @telecoM, скорее всего, некоторые странные символы в вашем скрипте.

 $ cat -A x1 #!/bin/bash$ if [ -f /etc/centos-release ]; then$ OS="CentOs"$ VERFULL=$(sed 's/^.*release //;s/ (Fin.*$//' /etc/centos-release)$ VER=${VERFULL:0:1} # return 6 or 7$ elif [ -f /etc/lsb-release ]; then$ OS=$(grep DISTRIB_ID /etc/lsb-release | sed 's/^.*=//')$ VER=$(grep DISTRIB_RELEASE /etc/lsb-release | sed 's/^.*=//')$ elif [ -f /etc/os-release ]; then$ OS=$(grep -w ID /etc/os-release | sed 's/^.*=//')$ VER=$(grep VERSION_ID /etc/os-release | sed 's/^.*"\(.*\)"/\1/')$ else$ OS=$(uname -s)$ VER=$(uname -r)$ fi$ $ ./x1 $