Y a-t-il un réel avantage à utiliser bash -c 'some command'
plutôt qu'à utiliserbash <<< 'some command'
Ils semblent obtenir le même effet.
bash
here-string
yosefrow
la source
la source
bash -c '...'
cela fonctionnera dans des coquilles qui n'ont pas de chaînes de caractères. Vous supposez que bash sera appelé dans un shell bash mais ce ne sera pas toujours le cas.Réponses:
bash -c 'some command'
conserve l'accès à l'entrée standard de l'appelant, de sorte que laread
lecture des commandes à partir de l'entrée standard fonctionnera normalement.bash <<< 'some command'
remplace cette entrée par la ligne transmise, doncbash -c cat
etbash <<< cat
faites des choses différentes.D'un autre côté, vous pouvez utiliser cette fonctionnalité pour fournir votre propre entrée standard à utiliser
$'...'
, si vous êtes très prudent:Je ne voudrais pas me fier à cela, mais cela pourrait être pratique parfois.
bash -c
permet également de passer des arguments au script et$0
de les définir:sera réglé
$1
versabc
et$2
vers l'def
intérieursome command
.la source
bash -c
ceux mentionnés-c
, AFAIK. Pas entièrement inutile, car cela peut aider à les retrouver.bash <<< 'script'
les erreurs ressemblent à celles du script parent;bash -c 'script'
d'autres non. Vous pouvez même les étiqueter:bash -c 'script' label
.bash <<< 'echo $1' /dev/stdin foo
fonctionne aussi et imprimefoo
. Bien que le réglage$0
soit un peu plus limité.bash <<< 'echo "$1"' /dev/stdin foo
ne fonctionne pas toujours. Je doisbash <<< 'echo "$1"' -s foo
travailler.