我有以下代码
echo 000
exec sudo -u ubuntu -i git --git-dir=/home/ubuntu/Avails/.git --work-tree=/home/ubuntu/Avails/ fetch origin
echo 111
exec sudo -u ubuntu -i git --git-dir=/home/ubuntu/Avails/.git --work-tree=/home/ubuntu/Avails/ merge origin/production
echo 222
exec sudo bash -c "STAGE=production $DIR/transporter_pulldown.py"
echo 333
它只打印000
然后返回。为什么会这样?
答案 0 :(得分:2)
如果您运行help exec
,则显示:
Replace the shell with the given command.
由于这个原因,您的第一个echo
打印000
和下一个sudo
会替换您的shell,因此sudo
之后的任何内容都无法运行,因为shell已经消失(它已被sudo
命令替换。
您可能不希望在脚本中使用exec
并将其运行为:
echo '000'
sudo -u ubuntu -i git --git-dir=/home/ubuntu/Avails/.git --work-tree=/home/ubuntu/Avails/ fetch origin
echo '111'
sudo -u ubuntu -i git --git-dir=/home/ubuntu/Avails/.git --work-tree=/home/ubuntu/Avails/ merge origin/production
echo '222'
sudo bash -c "STAGE=production $DIR/transporter_pulldown.py"
echo '333'