Как игнорировать файл в цикле for

Самый простой способ управления репозиториями, который я нашел, — это разместить их в отдельных файлах в /etc/apt/sources.list.d/. Таким образом, отключить репозиторий так же просто, как переместить файл из /etc/apt/sources.list.d/repo.listв /etc/apt/sources.list.d/repo.list.bak, а повторно -включить репо так же просто, как пойти другим путем. Вы даже можете создать скрипт, который временно отключает репозиторий, перемещая файл, запуская обновление/установку/что угодно, а затем снова перемещая файл обратно.

1
26.02.2020, 18:50
3 ответа

При переборе файлов с помощью glob путь будет добавлен к файлу. Итак, если ваш файл просто mongo(, который должен быть основан на вашем коде, если это не так, это также проблема ), ваш цикл установит serviceв /home/<YOUR USER>/start/mongo. Затем вы пытаетесь увидеть, не равно ли это mongo, что не так. Вы можете использовать basename, чтобы исправить это :

.
for s in "$HOME/start/"*
do
    service=$(basename "$s")
    if [ -f "$HOME/test/$service/start.sh" ] && [ "$service" != mongo ]
    then
            cd "$HOME/start/$service"
           ./start.sh
    else
            pwd
            echo "No start script found for $service"
    fi
done
2
28.04.2021, 23:22

Может быть интересным случаем для «расширенного подстановки/расширенного сопоставления с образцом» -, если ваша оболочка(bash? )предусматривает, что:

$ shopt -s extglob
$ for s in "$HOME/start/"!(mongo); do echo $s; done
0
28.04.2021, 23:22

Не делай этого!Используйте механизм для запуска служб в вашем дистрибутиве (предположительно systemdсегодня, если Linux; другие системы Unixy имеют свои привлекательные особенности... ). Затем используйте механизмы дистрибутива для включения/отключения запуска служб.

В документации вашего дистрибутива должны быть подробные сведения. Если вы устанавливаете службу из пакетов дистрибутива, об этом следует позаботиться автоматически. И это очень рекомендуется :дистрибутив (действительно :сопровождающий пакета в нем )позаботится о том, чтобы установка была выполнена правильно, сконфигурирована безопасно и будет поддерживать следите за сообщениями об ошибках (и потенциальными угрозами безопасности, важно учитывать, если это какой-то сервер, открытый для всех видов злоумышленников со всего мира ).

0
28.04.2021, 23:22

Теги

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