Сценарий оболочки - проверьте синтаксис - PullRequest
5 голосов
/ 22 августа 2011

Как проверить правильность синтаксиса, содержащегося в сценарии оболочки ksh, не выполняя его?Чтобы прояснить мою точку зрения: в perl мы можем выполнить команду:

perl -c test_script.pl

, чтобы проверить синтаксис.Есть ли что-то похожее на это в ksh?

Ответы [ 3 ]

4 голосов
/ 22 августа 2011

кш-н

Большая часть семейства Борн Шелл принимает -n. а также tcsh.

1 голос
/ 08 июня 2016

Тесты, которые вы сказали, не смогли обнаружить синтаксические ошибки, где на самом деле нет синтаксических ошибок ... echo - это команда (хорошо, встроенная, но все же команда), поэтому ksh / bash не собирается проверять орфографию / синтаксисвашей команды.Точно так же «[» фактически является псевдонимом для команды теста, а команда ожидает закрывающую скобку «]» как часть своего синтаксиса, а не ksh / bash.Итак, вы делаете то, что написано на банке, вы просто неправильно прочитали банку!: -)

1 голос
/ 03 марта 2015

Я провел небольшой тест со следующим кодом:

#!/bin/bash
if [ -f "buggyScript.sh" ; then
    echo "found this buggy script"
fi

Обратите внимание на отсутствие] в if.Теперь я ввел

bash -n buggyScript.sh

, и пропавшее] не было обнаружено.

Второй тестовый скрипт выглядел так:

#!/bin/bash
if [ -f "buggyScript.sh" ]; then
    echo "found this buggy script"

Обратите внимание на отсутствующий файл в концееслиТестирование с помощью

bash -n buggyScript.sh

вернуло

buggyScript.sh: line 5: syntax error: unexpected end of file

Вывод: тестирование сценария с параметром n обнаруживает некоторые ошибки, но ни в коем случае не все из них.Поэтому я думаю, что вы действительно найдете все ошибки только при выполнении скрипта.

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