Как исправить синтаксическую ошибку: неожиданный конец файла

#shell

Вопрос:

мой код таков

 #!/bin/sh

clear

if [[ "$1" == "donut" ]]; then
    mkdir ~/.deb
    wget ``https://github.com/packageash/repo/blob/main/Donut.deb?raw=true ~/.deb
    dpkg --install ~/.deb/Donut.deb
    rm ~/.deb/Donut.deb
elif [[ "$1" == "nodonut" ]]; then
sudo rm /usr/local/bin/donut
else
echo "Nothing Picked To Install."
 

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

Комментарии:

1. if У него нет соответствия fi .

2. Вставьте свой код в ShellCheck.net исправьте ошибки, а затем обновите свой вопрос здесь.

3. @DavidC.Rankin Обновил вопрос? Вопрос в ошибках в коде. Исправление ошибок в вопросе сделало бы вопрос недействительным.

4. @KeithThompson — точно!

5. " Line 14: -- SC1047 (error): Expected 'fi' matching previously mentioned 'if'. ... Fix any mentioned problems and try again." ??

Ответ №1:

Ну, если вы рассматриваете только два варианта и, поскольку этот скрипт действительно прост , я бы рекомендовал изменить значение if на switch case , потому [] что s может вести себя по-разному в зависимости от того, используете ли вы bash/sh/zsh. С помощью этого я создал простой фрагмент кода.

 #!/bin/bash
DEB_FOLDER="${HOME}/.deb"

case $1 in

  donut)
    mkdir -p ${DEB_FOLDER} #try to create folder if it doesn't exists
    wget https://cdn.glitch.me/ec7fa70f-caec-4ba9-877f-3f809b43f7ea/Donut.deb -O ${DEB_FOLDER}/Donut.deb #save the wget downloaded file to ~/.deb/Donut.deb
    sudo dpkg --install ${DEB_FOLDER}/Donut.deb #install the deb package"
    rm -f ${DEB_FOLDER}/Donut.deb #removes the  ~/.deb/Donut.deb file"
    ;;

  nodonut)
    sudo rm /usr/local/bin/donut
    ;;

  *)
    echo -n "Nothing Picked To Install"
    ;;
esac
 

Комментарии:

1. Спасибо, Братан, Но У Меня Есть Одна Проблема, Где Я Могу Хранить Файлы?

2. Теперь У Меня Есть Поставщик Файлов, Но Проблема В Том, Могу Ли Я Использовать Пробелы?

3. Привет @PokeyManatee4 Я отредактировал сценарий и оставил несколько комментариев. Файл будет сохранен в каталоге $DEB_FOLDER , в котором будет находиться home пользователь, запускающий скрипт, в моем случае что-то вроде: /home/juan/.deb/Donut.deb . Я не понял вашего второго вопроса, не могли бы вы отредактировать свой первый вопрос и привести несколько примеров?

4. я больше ничего не могу исправить, потому что мой терминал находится в Сети на codeanywhere, и это была бесплатная пробная версия(Я бы хотел, чтобы кто-нибудь Заплатил за это: — ( )

5. И @JuanFontes Я Спрашивал О Поставщике Файлов