Inline bash in command comments PDF Печать E-mail
Автор: Павел Алексеев aka Pahan-Hubbitus   
08.01.2011 19:21

Я потратил кучу времени чтобы найти способ добавлять комментарии внутрь длинных команд bash. Для одной из них, где мне это какраз очень надо было, раньше даже ввел специальны ключ, который просто игнорировался (смотри -c в HuRegRep).

А как хочелось бы иметь нечто вроде (внимание, пример не работает):

echo string0 \
	string1 /* Second parameter required because... */ \
	string2

Ну а на самом деле все оказывается очень просто - таких комментариев в bash и sh просто нету! По крайней мере на сколько я понял по многочисленным вопросам и ответам на эту тему в различных мэйллистах, где найти решения так и не удалось.

Так вот, стали думать с друзьями, и мне подсказали очень хорошую идею, вместе мы ее додумали вот до такого весьма красивого решения:

unset comment
echo string0 \
	string1 ${comment:"Second parameter required because..."} \
	string2

Пару слов в дополнение:

  1. Во-первых, как Вы уже поняли, это не есть настоящий коментарий! Вместо этого, просто используем конструкцию, которую легко будет читать в коде, но которая будет раскрыта в пустую строку как подстановка переменной!
  2. Вытекающее из первого: Т.к. это просто переменная, имя у нее может быть совершенно любое (а не обязательно comment как в примере), но какое-то обязательно должно быть (можно использовать что-то более короткое, скажем с или _c), впрочем comment помоему как нельзя лучше отражает суть.
  3. Ну и последнее. "unset comment" непосредственно перед командой, есть просто подстраховка чтобы быть уверенным что такой переменной не было нигде объявлено до этого и мы не получим в комманде сюрпризов. Если скрипт простой, или Вы просто уверены что такой переменной не использовалось, ее спокойно можно опустить.
Share/Save/Bookmark
 

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


Защитный код
Обновить