我正在使用一个命令行程序,其文档指出:
“您可以对位于另一个目录中的输入运行 XXX,但其输出将始终放在当前工作目录中”。但我希望将输出写入另一个目录。
我可以(使用cd
, 或pushd
+ popd
)
- 更改输出目录
- 运行命令以便输出放在那里
- 然后改回来
或者
- 在我当前的位置运行命令
- 将输出移动到输出文件夹
...但这两种方法看起来都很笨重,如果脚本由不了解此要求的人编辑,则容易出错。我能想到的唯一其他解决方案是用分号连接命令。还有其他方法吗?
顺便说一下,这是在 bash 中。
答案1
使用括号,因此 cd 出现在子 shell 中:
(cd other_dir && xxx)
当结束后,您当前的工作目录将不会改变。
cd 可能会失败,因此使用&&
它来有条件地执行程序。