我有一个顺序脚本,其中有一个git clone。我想确保在执行下一步之前完成实际的git进程。 我试过了
git clone https://github.example.com/Sample/Example.git & export PID=${!} | while [[ ( -d /proc/$PID ) && ( -z `grep zombie /proc/$PID/status` ) ]]; do sleep 1; done
以及其他各种方法,但无法管理如何等到实际的git克隆完成。请问这个暗示吗?
答案 0 :(得分:7)
这里的问题是您通话中的&
。这将强制git命令在后台执行。只需使用;
或&&
分隔您的命令。
e.g。 无论如何,这将回应“克隆”。即使“git clone”失败了。
git clone https://github.example.com/Sample/Example.git; echo "cloned"
或:
只有当克隆成功时,才会回复“克隆”。
git clone https://github.example.com/Sample/Example.git && echo "cloned"
根据你的描述,我认为你需要第二种选择。
答案 1 :(得分:1)
&
符号分叉git进程并将其置于后台。如果您希望在继续之前完成,请将其替换为&&
或换行符。