bash -c 'some command'
retiene el acceso a la entrada estándar de la persona que llama, por lo que los read
comandos de lectura desde la entrada estándar funcionarán normalmente. bash <<< 'some command'
sustituye esa entrada con la línea que se pasa en, por lo que bash -c cat
y bash <<< cat
hacer cosas diferentes.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
Por otro lado, puede utilizar esa función para proporcionar su propia entrada estándar para utilizarla $'...'
, si tiene mucho cuidado:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
No me gustaría confiar en eso, pero a veces podría ser conveniente.
bash -c
también permite que los argumentos se pasen al script y $0
se establezcan:
bash -c 'some command' sh abc def
se establecerá $1
en abc
y $2
para def
adentro some command
.