Скрипт Bash для открытия нескольких файлов Excel.

Вопрос или проблема

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

    case $foobaz in
        1)
            open "./foobar/foo.xlsm" &
            open "./foobar/bar.csv" &
            open "./foobar/baz.xlsx" &
            echo "Foobar открыт."
            ;;

case — это просто число, которое я ввожу, чтобы сказать скрипту, какой рабочий процесс я хочу. Есть и другие значения, кроме 1, но поскольку у них идентичный код, просто разные файлы.

Когда я запускаю это, скрипт открывает один или несколько файлов (это не последовательно по каким файлам и сколько), а затем зависает. Я, вероятно, просто сделал что-то глупое, написав код, так как я относительно новичок в Bash-скриптах, но я хотел бы узнать, что я сделал неправильно, чтобы больше узнать.

Ответ или решение

Вопрос о написании Bash-скрипта для одновременного открытия нескольких файлов Excel является актуальным, особенно в тех случаях, когда автоматизация задач может существенно повысить производительность рабочего процесса. Давайте разберемся с проблемой и возможными решениями.

Проблема и подключение файлов

В вашем сценарии используется конструкция case, где происходит открытие файлов Excel через команду open. Несмотря на то что вы используете фоновый режим (оператор &), скрипт продолжает зависать. Это может быть связано с тем, что команда open может блокировать завершение выполнения до тех пор, пока не будут закрыты все запущенные экземпляры.

Оптимизация кода

Чтобы избежать блокировки, вы можете использовать несколько подходов. Приведу обновленный вариант вашего скрипта, который должен корректно открывать все указанные файлы.

#!/bin/bash

case $foobaz in
    1)
        open "./foobar/foo.xlsm" &
        open "./foobar/bar.csv" &
        open "./foobar/baz.xlsx" &
        wait # дождаться завершения фоновых процессов (если это требуется)
        echo "Все файлы Foobar открыты."
        ;;
    # Другие случаи...
esac

Примечания к улучшению кода:

  1. Фоновый режим: Убедитесь, что каждый вызов open завершается, не блокируя выполнение скрипта. Использование & здесь подходит, поскольку файлы открываются в фоновом режиме.

  2. Команда wait: Это команда, которая помогает дождаться завершения всех процессов, если вам нужно убедиться в этом. В данном случае она не обязательна, если вы хотите продолжать работу скрипта.

  3. Проверка ошибок: Рекомендуется добавлять проверку на существование файлов перед их открытием. Это поможет избежать ошибок во время выполнения скрипта.

    for file in "./foobar/foo.xlsm" "./foobar/bar.csv" "./foobar/baz.xlsx"; do
       if [[ -e $file ]]; then
           open "$file" &
       else
           echo "Файл $file не найден."
       fi
    done

Заключение

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

С помощью предложенного выше подхода вы сможете эффективно открывать несколько файлов Excel в вашем рабочем процессе без зависаний и ошибок. Если возникнут дополнительные вопросы, не стесняйтесь их задавать!

Оцените материал
Добавить комментарий

Капча загружается...