O que os argumentos '-v' e '-x' significam bash?

12

Eu vi alguns scripts de shell com o seguinte shebang:

#!/bin/bash -x -v 

No entanto, man bash não explica o que esses argumentos -x e -v representam, se eles pertencem a bash .

Então, o que significam -x e -v (e outros argumentos possíveis)?

    
por Alex 11.04.2014 / 14:21

2 respostas

21

De man bash (sim, é uma grande página de manual, normalmente a pesquisa do Google é mais rápida):

-x After expanding each simple command, for command, case command, select command, or arithmetic for command, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list.

Efetivamente: quando você executa um script, ele mostra todas as ações feitas nesse script. Então todos os ifs, loops e comandos são executados. Muito útil para depuração.

-v Print shell input lines as they are read. When a script is run, it will print the entire script as it reads the file. When you use the shell interactively, it will show each command after you press enter.

As citações acima são da explicação do comando set builtin no man bash , que também explica que as opções para set também podem ser passadas como argumentos (na linha shebang):

The options are off by default unless otherwise noted. Using + rather than - causes these options to be turned off. The options can also be specified as arguments to an invocation of the shell. The current set of options may be found in $-. The return status is always true unless an invalid option is encountered.

    
por 11.04.2014 / 14:25
2

A página do manual bash faz sugerir que essas opções são explicadas mais abaixo, na verdade, mas é facilmente ignorada.

Portanto, seu problema deve realmente ser lido: A seção OPTIONS da página man bash está incompleta. A resposta seria duplicar ou destacar a primeira seção da seção OPTIONS:

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.  [ ... ]

Finalmente, para completar: são opções padrão para qualquer shell POSIX para mostrar o código do script quando ler ( -v ) e quando executar ( %código%). A saída aparecerá no stderr.

    
por 11.04.2014 / 16:38

Tags