
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
先頭の をスキップするとecho
、cd
4 つの引数で実行されbar && source baz
、最初の引数以外はすべて暗黙的に削除されます。