Was ich versuche in Bash zu tun, ist ein Skript zu schreiben, foo
, wenn ich renne $(foo)
ändert das Verzeichnis und führt ein Skript aus source
. Die Inhalte von foo
:
echo cd bar
echo "&&"
echo source baz
Wenn ich renne $(foo)
ändert das Verzeichnis in "bar", wird jedoch nicht ausgeführt source baz
. Gibt es eine Möglichkeit, dies zu erreichen?
command-line
bash
Kevin Marsolais
quelle
quelle
source
also versuche ich einen Weg zu finden, das zu tun.Antworten:
Du musst
eval
die Ausgabe:Andernfalls,
&&
(oder ein ähnliches Sprachelement) wird so behandelt, als ob es in Anführungszeichen gesetzt wäre: ein reguläres Argument fürcd
.Überspringen der Führung
echo
würde dies ausführencd
mit den vier Argumentenbar && source baz
und ließ stumm alle außer dem ersten fallen.quelle
Sie können verwenden Aliase (siehe auch: Mann Bash ) zu tun, was Sie zu tun versuchen.
ändert das Verzeichnis in bar und source baz, wenn Sie foo ausführen.
quelle