Розглянемо
echo \ # this is a comment
foo
Це дає:
$ sh foo.sh
# this is a comment
foo.sh: line 2: foo: command not found
Після деякого пошуку в Інтернеті я знайшов рішення DigitalRoss на сестринському сайті Stack Overflow. Так можна зробити
echo `: this is a comment` \
foo
або альтернативно
echo $(: this is a comment) \
foo
Однак DigitalRoss не пояснив, чому ці рішення працюють. Я буду вдячний за пояснення. Він відповів коментарем:
Раніше була
goto
команда оболонки, яка розгалужується на вказані:
тут мітки .goto
Пішов , але ви все ще можете використовувати: whatever
синтаксис ...:
це свого роду аналізованої коментар в даний час.
Але я хотів би отримати більше деталей та контексту, включаючи обговорення переносимості.
Звичайно, якщо хтось має інші рішення, це теж було б добре.
Дивіться також попереднє питання Як коментувати багаторядкові команди в скриптах оболонки? .
Візьміть домашнє повідомлення з обговорення нижче. Це `: this is a comment`
просто підміна команд. Результатом роботи : this is a comment
нічого, і це ставиться на місце `: this is a comment`
.
Кращим вибором є наступний:
echo `# this is a comment` \
foo