Що означають аргументи '-v' та '-x', щоб башти?


17

Я бачив пару сценаріїв оболонок із наступним шебангом:

#!/bin/bash -x -v 

Однак man bashне пояснює, до чого ці аргументи -xі -vвиступають, якщо вони взагалі належать bash.

То що означають ці -xта -v(та інші можливі аргументи)?

Відповіді:


26

З man bash(так, це велика сторінка, зазвичай пошук у Google швидший):

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

Ефективно: коли ви запустите сценарій, він покаже всі дії, виконані в цьому сценарії. Таким чином, всі ifs, цикли та команди виконуються. Дуже корисно для налагодження.

-v Друкуйте рядки введення оболонки під час їх зчитування Коли сценарій запускається, він буде друкувати весь сценарій під час читання файлу. Якщо ви використовуєте оболонку інтерактивно, вона показуватиме кожну команду після натискання клавіші Enter.

Викладені вище цитати наведено з пояснення setвбудованої команди в розділі man bash, яка також пояснює, що параметри для setтакож можна передавати як аргументи (у рядку shebang):

Параметри вимкнено за замовчуванням, якщо не зазначено інше. Використання, + а не -спричиняє вимкнення цих параметрів. Параметри також можуть бути вказані як аргументи до виклику оболонки. Поточний набір опцій може бути знайдений у $-. Статус повернення завжди вірний, якщо не виявлено недійсний варіант.


Гаразд, це простий аргумент, щоб башти, і я просто міг би мати іншу версію без цих аргументів?
Олексій

Якщо ви говорите про bash: я думаю, всі версії bash минулого десятиліття будуть підтримувати ці аргументи. Якщо ви говорите про сторінку чоловіка: вона величезна і вам потрібно знати, що ви шукаєте, але вона є там (принаймні, на Ubuntu 13.04). Зазвичай пошук у Google швидше.
mtak

6
+1 "Пошук у Google швидше" -> /-xкілька разів потрапить вас туди man(насправді це так less). Ви можете повторити останній пошук зі /стрілкою + вгору, але вам потрібно перейти на сторінку вниз, щоб отримати будь-який поточний пошук із екрана ( /це пошук вперед, ?це назад).
goldilocks

2
@ TAFKA'goldilocks 'Я думаю, це залежить від вашого дистрибутива. На сторінці керівництва з Ubuntu 13.04 на базі 43-го хіта є правильним. Легше шукати наступне звернення менше, використовуючи nдля прямого пошуку вперед та Nпошуку назад.
mtak

Ну, насправді я дивився на test -xУСЛІДНІ ВИРАЗИ (третій хіт), ні set -x. -xв man bash- це дуже поганий випадок, тому отримання більш конкретної /^\s+-x\bдопомоги допомагає: Якщо ви використовуєте (= початок рядка + пробіл + -xмежа межі слова), ви потрапляєте до потрібного у 5 звернень ... це було б 4, але за фактичні xзбіги X... що призводить мене до питання, яке я мав намір задати . У будь-якому випадку, на більшості чоловічих сторінок ^\s+-x\bшаблон повинен працювати спочатку спробувати для комутаторів.
goldilocks

2

Сторінка "bash man" робить натяк , що ці опції пояснюються далі вниз, на самому ділі, але це легко втратити з виду.

Тому ваша проблема насправді повинна читати: розділ ВАРІАНТИ сторінки bash man неповний. Відповідь полягає у тому, щоб їх дублювати або виділити перший розділ розділу ВАРІАНТИ:

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.