我可以在命令之间切换,并从不同的目录运行程序吗?

Let*_*ion 2 bash shell

我有一个特定的命令,根据当前工作目录的内容做出不同的反应.我现在希望将此程序重新发送回自身,然后将调用发生在不同的目录中.

在"伪bash"中,我想要

command arg1 | cd /other dir | command arg2
Run Code Online (Sandbox Code Playgroud)

我个人使用bash,但如果它有助于使用不同的shell,我愿意接受建议.:)

我意识到有一个非常简单的解决方法,使用临时文件或命名管道,但我想知道是否有办法在一个命令中执行此操作.

Ror*_*ory 6

command arg1 | ( cd /other_dir ; command arg2 )
Run Code Online (Sandbox Code Playgroud)

(…)在子shell中执行命令.cd是一个shell内置命令,而不是"真正的进程".( cd X ; command )将启动一个新的子shell,cd进入X,然后运行command.command作为进程运行,但在不同的目录中运行.

继续前进最好有一个可以将目录作为参数的命令(如果没有定义,则默认为当前工作目录).然后你可以有简单的解决方案command arg1 | command --dir=/other_dir arg2