Как проверить, что все переменные используются в скрипте bash? - PullRequest
1 голос
/ 27 марта 2012

Есть ли способ проверить, что все переменные, объявленные в скрипте bash, используются? Что-то аналогичное -Wall в C ++?

Приветствия

1 Ответ

6 голосов
/ 27 марта 2012

Нет встроенного способа сделать это, нет, и это никогда не может быть сделано идеально, из-за ситуаций, подобных этим:

  • Предположим, пользовательский профиль Bash экспортирует CLASSPATH в качестве переменной среды. Тогда сценарий Bash может включать в себя оператор типа
    CLASSPATH=...
    , но никогда не ссылаться на CLASSPATH, если его единственная цель при назначении CLASSPATH состоит в изменении поведения некоторой программы, которая использует переменную среды (например, java) .
  • Предположим, что я создаю переменные a и b и переменную c, значение которой получено от пользователя и может иметь значение a или b. Затем я могу использовать ${!c}, чтобы получить значение указанной пользователем переменной; данный прогон скрипта может никогда не ссылаться на b (поскольку c установлен на 'a'), но другой прогон скрипта может работать по-другому.

Тем не менее, вас может заинтересовать опция -u для встроенного set. Если ваш скрипт содержит эту команду:

set -u

с этого момента будет ошибкой ссылаться на переменную или параметр, которые не были установлены. Это может помочь обнаружить опечатки в именах переменных и еще много чего. Это, очевидно, намного меньше, чем то, что делает gcc -Wall (поскольку gcc всегда выдает сообщение об ошибке, когда вы ссылаетесь на необъявленную переменную), но вы можете найти его таким же полезным.

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