【发布时间】:2012-04-06 13:59:42
【问题描述】:
我想将一些 shell 命令与&& 串在一起——例如,
wget -c http://repository/file.tar.gz && tar -xzvf file.tar.gz && rm file.tar.gz
通常我会使用start-process,但这个功能似乎被&& 混淆了。我可以按顺序运行这三个命令,但在这种情况下,与许多其他命令一样,我想确保在第二个命令执行之前第一个命令没有被错误中止,依此类推。
Python 的 subprocess.call 函数有一个 shell=True 参数,您可以通过它发送整行——emacs lisp 中是否有这样的函数,或者在这种情况下我应该寻找另一种解决方法?
【问题讨论】:
-
您可以使用更简单的命令进行测试,
echo 1 && echo 2 && echo 3。我会尝试像\&\&一样转义'&'。祝你好运。 -
我认为问题在于
&&和;未被识别为被调用的process的参数... -
m0skit0: 如果你建议使用
;而不是&&,那不好,因为它们在语义上是不同的。当您使用&&时,您可以确保序列中的每个命令仅在所有先前的命令都成功的情况下执行。 YMMV,但我知道我很少需要;,而且您肯定不想在这个问题的示例中使用;。