调用命令就像在另一个目录中调用它一样

调用命令就像在另一个目录中调用它一样

我正在使用一个命令行程序,其文档指出:

“您可以对位于另一个目录中的输入运行 XXX,但其输出将始终放在当前工作目录中”。但我希望将输出写入另一个目录。

我可以(使用cd, 或pushd+ popd

  1. 更改输出目录
  2. 运行命令以便输出放在那里
  3. 然后改回来

或者

  1. 在我当前的位置运行命令
  2. 将输出移动到输出文件夹

...但这两种方法看起来都很笨重,如果脚本由不了解此要求的人编辑,则容易出错。我能想到的唯一其他解决方案是用分号连接命令。还有其他方法吗?

顺便说一下,这是在 bash 中。

答案1

使用括号,因此 cd 出现在子 shell 中:

(cd other_dir && xxx)

当结束后,您当前的工作目录将不会改变。

cd 可能会失败,因此使用&&它来有条件地执行程序。

相关内容