Встроенные комментарии для Bash?
Я хотел бы иметь возможность комментировать один флаг в однострочной команде. Bash только кажется, есть from # till end-of-line
комментарии. Я смотрю на трюки вроде:
ls -l $([ ] && -F is turned off) -a /etc
Это уродливо, но лучше, чем ничего. Есть ли лучший способ?
Кажется, что работает следующее, но я не уверен, что он переносимый:
ls -l `# -F is turned off` -a /etc
Ответы
Ответ 1
Я предпочитаю:
Комментирование в BASH script
У этого будут некоторые накладные расходы, но технически он отвечает на ваш вопрос
echo abc `#put your comment here` \
def `#another chance for a comment` \
xyz etc
И для конкретных трубопроводов есть чистое решение без накладных расходов
echo abc | # normal comment OK here
tr a-z A-Z | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
Как добавить комментарий к строке для многострочной команды
Ответ 2
Я считаю, что проще всего (и наиболее читаемым) просто скопировать строку и прокомментировать исходную версию:
#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc
Ответ 3
$(: ...)
немного менее уродливый, но все же не очень хороший.
Ответ 4
Как сохранить его в переменной?
#extraargs=-F
ls -l $extraargs -a /etc
Ответ 5
Большинство команд позволяют args поступать в любом порядке. Просто переместите прокомментированные флаги в конец строки:
ls -l -a /etc # -F is turned off
Затем, чтобы снова включить его, просто раскомментируйте и удалите текст:
ls -l -a /etc -F
Ответ 6
Здесь мое решение для встроенных комментариев между несколькими запрограммированными командами.
Пример без комментирования:
#!/bin/sh
çat input.txt \
| grep something \
| sort -r
Решение для комментария канала (с помощью вспомогательной функции):
#!/bin/sh
pipe_comment() {
cat -
}
cat input.txt \
| pipe_comment "filter down to lines that contain the word: something" \
| grep something \
| pipe_comment "reverse sort what is left" \
| sort -r
Или, если вы предпочитаете, здесь одно и то же решение без вспомогательной функции, но это немного грязнее:
#!/bin/sh
cat input.txt \
| cat - `: filter down to lines that contain the word: something` \
| grep something \
| cat - `: reverse sort what is left` \
| sort -r
Ответ 7
Если вы знаете, что переменная пуста, вы можете использовать ее в качестве комментария. Конечно, если он не пуст, это испортит вашу команду.
ls -l ${1# -F is turned off} -a /etc
& sect; 10,2. Замена параметров
Ответ 8
Если комментарий стоит сделать, он, вероятно, может идти в конце строки или в отдельной строке. Я редко нахожу потребность в комментариях внутри строки с кодом до и после комментария на любом языке.
О, есть одно исключение, которое является диалектом SQL, который я обычно использую, который использует "{comments}". Иногда я напишу:
CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);
Но даже это растяжение.
Ответ 9
Чтобы отключить часть команды типа a && b
, я просто создал пустой script x
, который находится на пути, поэтому я могу делать такие вещи, как:
mvn install && runProject
когда мне нужно построить, и
x mvn install && runProject
когда нет (используя Ctrl + A и Ctrl + E, чтобы перейти к началу и концу).