Qual é a vantagem de usar o bash -c usando uma string here?

11

Existe algum benefício real em usar bash -c 'some command' usando bash <<< 'some command'

Eles parecem ter o mesmo efeito.

    
por yosefrow 04.06.2017 / 04:44

1 resposta

21

bash -c 'some command' retém o acesso à entrada padrão do chamador, portanto, read ou comandos de leitura da entrada padrão funcionarão normalmente. bash <<< 'some command' substitui essa entrada pela linha que está sendo passada, então bash -c cat e bash <<< cat fazem coisas diferentes.

$ bash -c cat
abc
abc
^D
$ bash <<< cat
$

Por outro lado, você poderia fazer uso desse recurso para fornecer sua própria entrada padrão para ser usada através de $'...' , se você for muito cuidadoso:

$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$

Eu não gostaria de confiar nisso, mas às vezes pode ser conveniente.

bash -c também permite que argumentos sejam passados para o script e $0 a ser definido:

bash -c 'some command' sh abc def

definirá $1 para abc e $2 para def dentro de some command .

    
por 04.06.2017 / 04:51