Правильное использование оператора if-else - bash - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть 3 возможных случая для моего кода bash.

Я создаю команду bash, в которой у меня есть 3 возможных варианта, используя флаги, которые я присваиваю локальной переменной значение в зависимости от входных параметров, мой код в зависимости от входного параметра создает файл 1 вида, другой вид файл или оба файла.

Если к моей команде добавить параметр «-r», я создаю 1 тип файла, «красный файл», локальные сценарии var, activeRed = 1

Если к моей команде я добавляю генерируемый параметр "-f", "файл фида", activeFeed = 1

Если в моей команде я использую "-rf", я создаю оба файла, activeFeed = 1 activeRed = 1

        if [[ $activeRed -eq 1 && $activeFeed -eq 1 ]]; then 
            python donwload_files.py --config config-ref-"$market".yml --path_arg $start
            python donwload_files.py --config config-feed-"$market".yml --path_arg $start

        elif [ $activeRed -eq 1 ];then
            python donwload_files.py --config config-ref-"$market".yml --path_arg $start

        elif [ $activeFeed -eq 1 ]; then
            python donwload_files.py --config config-feed-"$market".yml --path_arg $start

        else
            python donwload_files.py --config config-ref-"$market".yml --path_arg $start
            python donwload_files.py --config config-feed-"$market".yml --path_arg $start
        fi

Как вы можете видеть, я генерирую очень простое утверждение if-else, но я думаю, что есть более эффективный способ для обработки этих 3 случаев вместо этого "невизуального" и повторного способа.

Есть идеи по созданию более логичного или эффективного высказывания?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Это проще. Просто обработайте каждую возможность независимо:

if [ "$activeRef" -eq 1 ]
then 
    python donwload_files.py --config config-ref-"$market".yml --path_arg $start
fi
if [ "$activeFeed" -eq 1 ]
then
    python donwload_files.py --config config-feed-"$market".yml --path_arg $start
fi

Для вашего предложения else, когда вы устанавливаете переменные activeRef и activeFeed, убедитесь, что в случае, когда не было задано ни одного параметра, вы должны установить обе переменные.

if [ "$activeFeed" -ne 1 && "$activeRef" -ne 1 ]
then
    activeFeed=1
    activeRef=1
fi
0 голосов
/ 06 сентября 2018

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

Вы можете уменьшить количество дел до 2:

if [ $activeRef -eq 1 ];then
    python donwload_files.py --config config-ref-"$market".yml --path_arg $start

if [ $activeFeed -eq 1 ]; then
    python donwload_files.py --config config-feed-"$market".yml --path_arg $start

Вы хотите запустить "config-ref", когда $ activeRef равно 1, и вы хотите запустить "config-feed", когда $ activeFeed равен 1, поэтому нет необходимости делать больше случаев if-else

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...