Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Команда для проверки синтаксиса в Bash  (Прочитано 1683 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Нашел вот такую команду

Код: Bash
  1. bash -n myscript.sh

Но при запуске не выходит никаких сообщений, специально изменял команды,вызывал необъявленные переменные , что подскажите, может уже по другому как-то все проверяется ???
« Последнее редактирование: 04 Май 2017, 13:55:41 от alex-sky »

Оффлайн Haron Prime

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 11313
  • Arch Linux & XMonad
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #1 : 04 Май 2017, 14:09:17 »
попробуйте shellcheck
sudo ls -a | grep brain > /dev/head

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #2 : 04 Май 2017, 15:20:41 »
Установил так(просто из github не знаю как)

Код: Bash
  1. sudo apt-get install shellcheck

Запустил

Код: Bash
  1. shellcheck ./check-exit-status.sh


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

Ошибку в Sha-bang - не заметил то же...

Использовал еще так, но это как-то громозко, это не то

(Нажмите, чтобы показать/скрыть)



Пользователь добавил сообщение 04 Май 2017, 16:03:10:
Еще небольшой скрипт для провекрки синтаксиса с утилитой shellcheck

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 04 Май 2017, 16:03:46 от alex-sky »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #3 : 04 Май 2017, 21:34:04 »
Пропускает необъявленные переменные
В bash нет механизма предварительного объявления переменных…
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #4 : 05 Май 2017, 00:33:09 »
Команда для проверки синтаксиса в Bash
bash -n my_script.sh
(Нажмите, чтобы показать/скрыть)

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #5 : 05 Май 2017, 13:03:49 »
Так ведь я изначально - это и сделал, но в ответ молчание, как-будто ошибок нет

(Нажмите, чтобы показать/скрыть)


Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #6 : 05 Май 2017, 14:58:00 »
alex-sky, Ну Вас же направили
man bash
Я горячо приветствую Ваше рвение, но задавать елементарные вопросы, которые не возникнут, если предварительно получите хоть минимальные базовые знания не комильфо.
Цитата: man bash
?      Expands to the exit status of the most recently executed foreground pipeline.
Какая у Вас в скрипте «the most recently executed» команда перед вызовом $?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #7 : 06 Май 2017, 15:24:33 »
да, это ошибка, так как я просто получу exit-статус команды echo.



Пользователь добавил сообщение 06 Май 2017, 15:30:58:
Вот код без излишеств.

Код: Bash
  1. echo
  2. read -p "Введите путь к проверяемому файлу:  "  path
  3.  
  4. echo
  5. bash -n "${path}

(Нажмите, чтобы показать/скрыть)

вводил так

Код: Bash
  1.  bash -n ./myscript.sh

и так

Код: Bash
  1.  bash -o noexec ./myscript.sh

никаких сообщений про скрипт, хотя скрипт с явными ошибками...
« Последнее редактирование: 06 Май 2017, 15:30:58 от alex-sky »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #8 : 06 Май 2017, 15:36:37 »
Что в myscript.sh ?

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #9 : 06 Май 2017, 15:47:59 »
myscript.sh

(Нажмите, чтобы показать/скрыть)

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Re: Команда для проверки синтаксиса в Bash
« Ответ #10 : 06 Май 2017, 16:00:13 »
Второй ша-банг это просто комментарий.

else-in-in интерпритируется как имя программы, которую при выполнении баш не найдет. Но конструкция if...then...fi в таком виде верна.

$$1 будет пид шелла и 1


Пользователь добавил сообщение 06 Май 2017, 16:09:04:
bash -n myscript.shНе проверяет наличие вызываемых в скрипте программ в $PATH
« Последнее редактирование: 06 Май 2017, 19:17:24 от renzrv »

 

Страница сгенерирована за 0.554 секунд. Запросов: 23.