我可以在一行 bash 中嵌入命令吗?

Tru*_*ell 2 unix macos bash shell

我想运行命令:

$ cd which automator 
Run Code Online (Sandbox Code Playgroud)

以便将 which automator 返回的值传递给 cd。我查遍了所有内容,但找不到简单的答案。救救我吧!

mkl*_*nt0 5

您可能正在寻找:

cd "$(dirname "$(which automator)")"
Run Code Online (Sandbox Code Playgroud)
  • 通常,您需要$(...)命令替换来使用命令的输出作为另一个命令的参数。

  • 在这种情况下,因为which automator返回文件路径,所以您需要2 个命令替换:第一个使用 获取可执行文件路径,第二个使用 从中which提取目录dirname路径。

  • 对命令替换加双引号通常是正确的做法。如果不这样做,命令输出会受到分词和通配符(这是shell 扩展的两个实例)的影响,这很少是您想要的。