Existe algum benefício real em usar bash -c 'some command'
demaisbash <<< 'some command'
Eles parecem alcançar o mesmo efeito.
bash
here-string
yosefrow
fonte
fonte
bash -c '...'
funcionará em conchas que não têm herestrings. Você está assumindo que o bash será chamado dentro de um shell do bash, mas nem sempre será esse o caso.Respostas:
bash -c 'some command'
retém o acesso à entrada padrão do chamador; portanto, osread
comandos de leitura da entrada padrão funcionarão normalmente.bash <<< 'some command'
substitui a entrada com a linha que está sendo transmitido, por issobash -c cat
ebash <<< cat
fazer coisas diferentes.Por outro lado, você pode usar esse recurso para fornecer sua própria entrada padrão a ser usada
$'...'
, se você for muito cuidadoso:Eu não gostaria de confiar nisso, mas às vezes poderia ser conveniente.
bash -c
também permite que argumentos sejam passados para o script e$0
sejam definidos:irá definir
$1
paraabc
e$2
paradef
dentrosome command
.fonte
bash -c
mencionam-c
, AFAIK. Não é totalmente inútil, pois isso pode ajudar a localizá-los.bash <<< 'script'
erros se parecem com os do script pai;bash -c 'script'
outros não. Você pode até mesmo classificá-los:bash -c 'script' label
.bash <<< 'echo $1' /dev/stdin foo
funciona também e imprimefoo
. Embora a configuração$0
seja um pouco mais limitada.bash <<< 'echo "$1"' /dev/stdin foo
nem sempre funciona. Eu tenhobash <<< 'echo "$1"' -s foo
que trabalhar