Что аргументы '-v' и '-x' означают для bash?

17

Я видел пару сценариев оболочки со следующим shebang:

#!/bin/bash -x -v 

Однако man bashне объясняется, к чему эти аргументы -xи -vотстаивают, если они вообще принадлежат bash.

Так что же означают эти -xи -v(и другие возможные аргументы)?

Alex
источник

Ответы:

26

С man bash(да, это большая справочная страница, обычно поиск в Google быстрее):

-x После развертывания каждой простой команды, для команды, команды case, команды выбора или арифметики для команды, отобразите расширенное значение PS4, затем команду и ее расширенные аргументы или связанный список слов.

Эффективно: когда вы запускаете скрипт, он покажет все действия, выполненные в этом скрипте. Так что все if, циклы и команды выполняются. Очень полезно для отладки.

-v Вывести строки ввода в оболочку по мере их чтения. Когда скрипт запускается, он печатает весь скрипт, когда читает файл. Когда вы используете оболочку в интерактивном режиме, она будет показывать каждую команду после нажатия клавиши ввода.

Приведенные выше цитаты взяты из пояснения setвстроенной команды в man bash, которая также объясняет, что опции для setтакже могут быть переданы в качестве аргументов (в строке shebang):

Параметры отключены по умолчанию, если не указано иное. Использование, + а не -вызывает отключение этих параметров. Параметры также могут быть указаны в качестве аргументов для вызова оболочки. Текущий набор параметров можно найти в $-. Статус возврата всегда истинен, если не обнаружен неверный параметр.

mtak
источник
Итак, это простой аргумент для bash, и у меня просто может быть другая версия без этих аргументов?
Алекс
Если вы говорите о bash: я думаю, что все выпуски bash последнего десятилетия будут поддерживать эти аргументы. Если вы говорите о справочной странице: она огромна и вам нужно знать, что вы ищете, но она есть (по крайней мере, в Ubuntu 13.04). Обычно поиск в Google происходит быстрее.
mtak
6
+1 «Поиск в Google быстрее» -> /-xпару раз попадет туда man(на самом деле, так и есть less). Вы можете повторить последний поиск со /стрелкой + вверх, но вам нужно пролистать страницу вниз, чтобы любой текущий поиск ударил с экрана ( /это поиск вперед, ?назад).
Златовласка
2
@ TAFKA'goldilocks 'Я думаю, это зависит от вашего дистрибутива. На странице руководства по Ubuntu 13.04 bash правильный 43-й удар. Легче искать следующий хит меньше, используя nпрямой поиск и Nобратный поиск.
mtak
К сожалению, на самом деле я смотрел в test -xусловных выражениях (третий хит), нет set -x. -xв man bashдовольно плохой случай , так что получить более конкретные помогает: Если вы используете /^\s+-x\b, (= начало строки + пробел + -x+ границе слова) вы получите правого в 5 ударов ... это было бы 4 , но тот факт , xспичек X... что приводит меня к вопросу, который я хотел задать . В любом случае, с большинством страниц ^\s+-x\bсправочника шаблон должен сработать в первую очередь для переключения.
Златовласка
2

Страница Баша человека делает намек , что эти опции объясняются далее вниз, на самом деле, но это легко упустить из вида.

Поэтому ваша проблема должна выглядеть следующим образом: раздел OPTIONS на странице руководства bash неполон. Ответ будет либо дублировать их, либо выделить первый раздел раздела ОПЦИИ:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

Наконец, чтобы сделать это завершенным: они являются стандартными опциями для любой оболочки POSIX для отображения кода скрипта при чтении ( -v) и при запуске ( -x). Вывод появится на stderr.

Хенк Лангевельд
источник