Gibt es einen wirklichen Vorteil gegenüber der Verwendung bash -c 'some command'
?bash <<< 'some command'
Sie scheinen den gleichen Effekt zu erzielen.
bash
here-string
yosefrow
quelle
quelle
bash -c '...'
es in Muscheln funktioniert, die keine Herestrings haben. Sie gehen davon aus, dass Bash innerhalb einer Bash-Shell aufgerufen wird, dies ist jedoch nicht immer der Fall.Antworten:
bash -c 'some command'
behält den Zugriff auf die Standardeingabe des Anrufers bei, sodassread
Befehle, die von der Standardeingabe gelesen werden, normal funktionieren.bash <<< 'some command'
Ersetzt diese Eingabe durch die übergebene Zeile,bash -c cat
und führtbash <<< cat
verschiedene Aktionen aus.Auf der anderen Seite können Sie diese Funktion verwenden, um Ihre eigenen Standardeingaben bereitzustellen, die verwendet werden können
$'...'
, wenn Sie sehr vorsichtig sind:Darauf möchte ich mich nicht verlassen, aber manchmal kann es praktisch sein.
bash -c
Außerdem können Argumente an das Skript übergeben und$0
festgelegt werden:wird eingestellt ,
$1
umabc
und$2
nachdef
innensome command
.quelle
bash -c
erwähnen-c
AFAIK. Nicht ganz sinnlos, da dies helfen kann, sie aufzuspüren.bash <<< 'script'
Fehler sehen genauso aus wie im übergeordneten Skript.bash -c 'script'
diejenigen nicht. Sie können sie sogar beschriften :bash -c 'script' label
.bash <<< 'echo $1' /dev/stdin foo
auch und drucktfoo
. Die Einstellung$0
ist jedoch etwas eingeschränkter.bash <<< 'echo "$1"' /dev/stdin foo
funktioniert nicht immer. Ich mussbash <<< 'echo "$1"' -s foo
arbeiten.