Синтаксическая ошибка «elif» неожиданное ожидание, затем [закрыто]

-1
26.01.2019, 18:10
4 ответа

Si el shell informa ese error en la quinta línea del script que publicó, debe haber algún error invisible con el thenen la primera línea.

Puede ver su secuencia de comandos con cat -Apara ver si hay caracteres de espacio ALT -accidentales u otros caracteres no -imprimibles en la línea. cat -Amostrará los caracteres de alimentación de la línea -como $al final de cada línea, los caracteres de control con el prefijo ^y los caracteres no imprimibles con el octavo bit configurado con el prefijo M-. Por ejemplo, los caracteres TAB aparecerán como ^I.

La salida cat -Apuede parecer un poco desordenada, pero es una excelente manera de asegurarse de que no haya ningún carácter imprimible -donde no debería estar.

3
28.01.2020, 05:07

Ese fragmento de script funciona bien para mí. Como señala @telecoM, es probable que haya algunos caracteres extraños dentro de su guión.

$ 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
$
0
28.01.2020, 05:07

Я столкнулся с такой проблемой. Решение для меня состояло в том, чтобы запустить dos2unix в файле. После этого все было хорошо.

0
28.01.2020, 05:07

Вы можете изменить свой файл, выполнив следующую команду:

sed -i 's/\r$//' filename
1
28.01.2020, 05:07

Теги

Похожие вопросы