Como passar argumentos para o interpretador shebang ao executar um script?

2

Digamos que eu tenha my.script , como

#!/bin/bash

blah
blah

e o intérprete bash aceita um argumento --verbose .

Como eu executo meu.script passando --verbose para bash?

Eu sei que posso fazer bash --verbose my.script na linha de comando, mas eu preciso ser capaz de executar my.script diretamente.

EDITAR:

Ok, talvez eu devesse ter descrito meu exemplo exato. Estou usando o grunt.js build system cujo cli é um script com um #! para o nó. Agora, o grunhido roda plugins e um desses plugins que eu uso precisa de um certo sinalizador para ser ativado no nó. O grito script cli não faz isso e eu não quero mudar isso.

    
por beret 31.01.2015 / 21:07

3 respostas

7

Você pode adicionar --verbose à linha shebang:

#!/bin/bash --verbose

Se você estiver executando isso no Linux, devido à maneira como o kernel lida com linhas shebang, você só pode adicionar um parâmetro dessa maneira. Em shell scripts você pode controlar as opções de shell usando set ; neste caso

#!/bin/bash

set -o verbose

blah
blah

(Embora isso só mostre comandos após a linha set , enquanto que ter --verbose na linha shebang mostra todos os comandos, incluindo o shebang.)

    
por 31.01.2015 / 21:12
0

test.sh:

#!/bin/bash -v
date
:
x=3

A execução produz:

$ ./test.sh
#!/bin/bash -v
date
Sat Jan 31 21:34:06 VET 2015
:
x=3
    
por 01.02.2015 / 03:05
0

Que tal

node --option 'which grunt'
    
por 05.02.2015 / 19:01

Tags