Cosa significano gli argomenti '-v' e '-x' bash?


17

Ho visto un paio di script di shell con il seguente shebang:

#!/bin/bash -x -v 

Tuttavia, man bashnon spiega a cosa servono questi argomenti -xe -vse appartengono bashaffatto.

Quindi cosa significano quelli -xe -v(e altri possibili argomenti)?

Risposte:


26

Da man bash(sì, è una grande pagina man, di solito la ricerca di Google è più veloce):

-x Dopo aver espanso ogni comando semplice, per comando, comando caso, selezionare comando o aritmetica per comando, visualizza il valore espanso di PS4, seguito dal comando e dai suoi argomenti espansi o dall'elenco di parole associato.

In effetti: quando esegui uno script, mostrerà tutte le azioni eseguite in quello script. Quindi tutti gli if, i loop e i comandi vengono eseguiti. Molto utile per il debug.

-v Stampa le righe di input della shell man mano che vengono lette. Quando viene eseguito uno script, stamperà l'intero script mentre legge il file. Quando si utilizza la shell in modo interattivo, mostrerà ogni comando dopo aver premuto Invio.

Le citazioni sopra sono dalla spiegazione del setcomando incorporato in man bash, che spiega anche che le opzioni per setpossono anche essere passate come argomenti (sulla riga shebang):

Le opzioni sono disattivate per impostazione predefinita se non diversamente indicato. L'utilizzo + anziché la -disattivazione di queste opzioni. Le opzioni possono anche essere specificate come argomenti per un'invocazione della shell. L'attuale set di opzioni è disponibile in $-. Lo stato di restituzione è sempre vero a meno che non venga rilevata un'opzione non valida.


Ok, quindi è un semplice argomento da bash e potrei avere una versione diversa senza questi argomenti?
Alex,

Se stai parlando di bash: penso che tutte le versioni bash dell'ultimo decennio sosterranno questi argomenti. Se stai parlando della pagina man: è enorme e devi sapere cosa stai cercando, ma è lì (almeno su Ubuntu 13.04). Di solito una ricerca su Google è più veloce.
martedì

6
+1 "La ricerca di Google è più veloce" -> /-xun paio di volte ti porterà lì man(in realtà lo è less). Puoi ripetere l'ultima ricerca con /+ freccia su, ma devi scorrere la pagina verso il basso per far sparire qualsiasi ricerca corrente dallo schermo ( /è la ricerca in avanti, ?è indietro).
Riccioli d'oro

2
@ TAFKA'goldilocks 'Immagino che dipenda dalla tua distribuzione. Nella pagina del manuale di Ubuntu 13.04 bash il 43esimo successo è quello giusto. È più facile cercare il prossimo hit in meno utilizzando la nricerca in avanti e Nla ricerca all'indietro.
martedì

Spiacenti, in effetti stavo guardando in test -xEXPRESSIONS CONDIZIONALI (il terzo successo), non set -x. -xin man bashè un brutto caso quindi ottenere aiuti più specifici: Se usi /^\s+-x\b, (= inizio della riga + spazio bianco + -x+ limite di parole) arrivi a quello giusto in 5 colpi ... sarebbe stato 4 ma per il fatto xcorrisponde X... il che mi porta a una domanda che intendevo porre . Ad ogni modo, con la maggior parte delle pagine man il ^\s+-x\bmodello dovrebbe funzionare prima di provare con gli switch.
Riccioli d'oro,

2

La pagina di man di bash fa accenno al fatto che queste opzioni sono spiegate più in basso, in realtà, ma è facilmente trascurato.

Pertanto il tuo problema dovrebbe effettivamente essere letto: la sezione OPTIONS della pagina man di bash è incompleta. La risposta sarebbe o duplicarli o evidenziare la prima sezione della sezione OPZIONI:

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

Infine, per renderlo completo: sono opzioni standard per qualsiasi shell POSIX per mostrare il codice dello script quando read ( -v) e quando run ( -x). L'output apparirà su stderr.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.