#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 Я Спрашивал О Поставщике Файлов