Задать вопрос
@bort95
Senior Software Developer

Как правильно распарсить команду bash?

Имеется команда:
ls -l -a && less build.sh
Команда - стоит на первом месте
Значение команды идет сразу после команды (если оно есть)
Опции - идут с префиксом '-' или '--', следуют за командой

Требуется построить древо вызова наподобии:

ls
- - l
- - a
less
- build.sh
Сейчас имеется алгоритм который сплитами и циклами строит подобное дерево.
Суть вопроса, какие подводные камни могут встретиться?
Существует ли документ, показывающий иерархию (приоритет) выполнения комманд, как, например, в java ?
  • Вопрос задан
  • 513 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Имеется команда:
ls -l -a && less build.sh
Команда - стоит на первом месте
Значение команды идет сразу после команды (если оно есть)
Опции - идут с префиксом '-' или '--', следуют за командой

Для bash не имеет значения, опции ли это и с чего они начинаются. bash рассматривает их просто как слова, которые он после неких трансформаций (таких как brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, word splitting и pathname expansion) передаёт как параметры запускаемой команде.

Требуется построить древо вызова... Сейчас имеется алгоритм который сплитами и циклами строит подобное дерево. Суть вопроса, какие подводные камни могут встретиться?

Зависит от того, каким должно быть это дерево вызова и какой объём возможного синтаксиса требуется поддерживать. Подводных камней -- масса, начать можно с кавычек в параметрах.

Существует ли документ, показывающий иерархию (приоритет) выполнения комманд, как, например, в java ?

man 1 bash
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы