我在 bash 中尝试编写一个脚本,,foo
当我运行时$(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
使用四个参数执行bar && source baz
,默默地删除除第一个之外的所有参数。