コマンド置換を使用して複数のコマンドを実行する

コマンド置換を使用して複数のコマンドを実行する

foo私が bash でやろうとしているのは、 を実行すると$(foo)ディレクトリを変更し、 を使用してスクリプトを実行するスクリプト を書くことですsource。 の内容foo:

echo cd bar
echo "&&"
echo source baz

を実行すると$(foo)、ディレクトリが「bar」に変更されますが、 は実行されませんsource baz。これを実現する方法はありますか?

答え1

eval出力が必要です:

eval $(foo)

それ以外の場合、 (またはその他の同様の言語要素) は引用符で囲まれているものとして扱われます。つまり&&、 への通常の引数です。cd

$ echo $(foo)
cd bar && source baz

先頭の をスキップするとechocd4 つの引数で実行されbar && source baz、最初の引数以外はすべて暗黙的に削除されます。

答え2

使用できますエイリアス(参照:男の強打) を使用して、目的の作業を実行します。

alias foo='cd bar && source baz'

foo を実行すると、ディレクトリが bar に変更され、baz がソースになります。

関連情報