大家好,
我目前正在努力解决在 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 && b
b
当且仅当a
成功(返回退出状态)时才运行0
。一般来说,如果您希望脚本使用起来cd
更可靠,最好始终检查是否cd
成功。这可以防止在错误的目录中运行其他命令。
请注意,当涉及符号链接时,您可能无法获得预期的路径。请参阅这个社区维基百科答案了解详情。
答案2
我找到了解决方案:
(cd .. && echo `pwd`)
谢谢 :)