Передача задачи «если утверждение» в сценариях оболочки - PullRequest
0 голосов
/ 15 мая 2019

Я разрабатываю простое терминальное приложение, которое помогает скомпилировать исходные файлы C / C ++ и Python в одну команду. Но когда я выполняю функцию наподобие 'erun test.py', она всегда выдает: ERun: расширение файла неизвестно.

На мой взгляд, проблема в утверждении if. Я пытаюсь редактировать эти заявления, но ничего не изменилось. Вот мой исходный код:

#/bin/bash
# function ERun for C/C++ and python
# version 1.0

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

function erun {
    if [ -z "$1" ]; then
        #display usage if no paramters given
        echo "Usage: erun file.c/.cpp/.py"
        echo "Run: ./file"
    else
        for n in "$@"
        do
            if [ -f "$n" ] ; then
                case "$n{n%,}" in
                    *.py)
                    chmod +x "$n"       ;;
                    *.c|*.cpp)
                    gcc "$n" -o "$n"    ;;
                    *)
                    echo "ERun: '$n' unknown file extension"

                    return 1
                    ;;        
            esac
        else
            echo "'$n' - file does not exist."
            return 1
        fi
    done
 fi
}

IFS=$SAVEIFS

Мой ожидаемый вывод - получение исполняемого файла. Я буду счастлив, если вы сможете мне помочь. Кстати, если вы хотите внести свой вклад в этот крошечный проект, вот ссылка на проект: https://github.com/lvntky/ERun/:)

1 Ответ

1 голос
/ 15 мая 2019

Это странно

"$n{n%,}"

Для ab/program.py возвращается ab/program.py{%n,}.

Вы, вероятно, хотели что-то вроде

"${n,,}"

вместо этого, который превращает все прописные буквы в строчные.

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