如何从bash脚本执行git命令?

时间:2014-09-07 19:59:06

标签: git bash shell

我有以下bash脚本来启动ssh-agent,添加我的密钥并对repo执行git pull。代理启动,添加密钥但git pull不执行...至少没有任何内容回显给终端。如果我将它输入终端,git命令就可以工作......我的bash脚本中是否需要做些什么才能使它工作?

#!/bin/bash

# if we can't find an agent, start one, and restart the script.
if [ -z "$SSH_AUTH_SOCK" ] ; then
  exec ssh-agent bash -c "ssh-add ; $0"
  exit
fi

exec ssh-add ~/.ssh/mykey
git --git-dir=/var/www/node/myapp/.git pull origin master

当我将-x添加到#!/ bin / bash时,这是终端输出

+ '[' -z '' ']'
+ exec ssh-agent bash -c 'ssh-add ; ./startgit.sh'
+ '[' -z /tmp/ssh-<redacted>/agent.1733 ']'
+ exec ssh-add /home/ec2-user/.ssh/mykey
Identity added: /home/ec2-user/.ssh/mykey (/home/ec2-user/.ssh/mykey)

1 个答案:

答案 0 :(得分:8)

exec命令用当前执行的进程替换当前shell。因此,脚本中跟随它的行不会被执行。

从联系手册:

  

exec :exec [-cl] [-a name] file [redirection ...]

     

Exec FILE,用指定的程序替换此shell。   你应该从行

中删除它
exec ssh-add ~/.ssh/mykey

并且只是

ssh-add ~/.ssh/mykey