0

私のbashrcには次のものがあります:

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initializing new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

コマンドラインで入力でき、「正しいことをする」start_agentので、それが定義されていることがわかります。start_agent問題は、start_agentログイン時に実行されることを期待していて、実行されていないことです。しかし、関数が定義されているため、制御フローが通過していることはわかっています。

4

1 に答える 1

1

ただ試してみてください:

if [ condition ]; then
  echo "then branch "
  start_agent
else
  echo "else branch"
  start_agent
fi

これが機能する場合、ps -ef ....期待どおりに動作していないのはあなたの行です。

set -vxさらに、シェルターが「エコー スタイル」のデバッグに提案するものを試すことができます。

于 2014-03-20T15:39:36.603 に答える