使用命令替换执行多个命令

使用命令替换执行多个命令

我在 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,默默地删除除第一个之外的所有参数。

答案2

您可以使用别名(也可以看看:男子猛击)去做你想做的事。

alias foo='cd bar && source baz'

当你执行 foo 时将会把目录改变到 bar 并且源为 baz。

相关内容