回显:多个命令

回显:多个命令

大家好,

我目前正在努力解决在 echo 中执行多个命令的问题。以下行是我遇到的问题的一个示例:

echo (cd .. && pwd)

这个想法是,当我当前位于文件夹“home/Documents”中时,上述代码会打印“home” - 但仍然位于目录“home/Documents”中。但是,上述命令失败了。

更普遍的问题是:如何在 echo 中执行多个命令并打印最后结果(或如果无法通过其他方式实现则打印所有结果)。

谢谢您,并致以亲切的问候。

答案1

我的想法是,当我当前在文件夹中时home/Documents,上面的代码会打印home- 但仍位于目录中home/Documents

echo你根本不需要,因为pwd它会打印你想要的东西。使用这个:

(cd .. && pwd)

这里有两件聪明的事:

  • (whatever)whatever在子 shell 中运行。如果cd位于这些括号内,它将更改子 shell 的当前工作目录,而不是主(当前)shell。
  • a && bb当且仅当a成功(返回退出状态)时才运行0。一般来说,如果您希望脚本使用起来cd更可靠,最好始终检查是否cd成功。这可以防止在错误的目录中运行其他命令。

请注意,当涉及符号链接时,您可能无法获得预期的路径。请参阅这个社区维基百科答案了解详情。

答案2

我找到了解决方案:

(cd .. && echo `pwd`)

谢谢 :)

相关内容