Por que esse script não aceita argumentos?

2

Estou tentando escrever um hook de pós-commit do SVN e, estranhamente, estou ficando preso no que deveria ser a parte mais fácil.

O script:

#!/usr/bin/sh
set REPO="$1"
set REV="$2"

set SVNBIN="/opt/CollabNet_Subversion/bin/"
set SSHBIN="/usr/bin/ssh"

set HOST="staging.domain.net"
set timeout=30
set USERNAME="svn-usr"

set E_NO_CONNECT=2
set E_WRONG_PASS=3
set E_UNKOWN=25

set CHANGED='"$SVNBIN"svnlook changed --revision $REV $REPOS'
echo "Here are changes: $CHANGED" >> /var/svn/repos/www/logs/testing
echo "Command: $0; Repo: $REPO; Rev: $REV; Total: $#" >> /var/svn/repos/www/logs/testing
set PROJECT ""

No entanto, quando eu chamo isso, parece que não vejo os argumentos que eu passo para ele:

/var/svn/repos/www/logs> sudo ../hooks/post-commit /var/svn/repos/www 33
svnlook: missing argument: --revision
Type 'svnlook help' for usage.
/var/svn/repos/www/logs> cat testing
Here are changes:
Command: ../hooks/post-commit; Repo: ; Rev: ; Total: 1

Isso está em uma caixa do Solaris 10 SPARC.

Sou um pouco novato em um roteiro, mas isso não deve ser realmente fácil?

    
por Nate Wagar 19.04.2010 / 16:31

3 respostas

4

set não faz o que você pensa: modifica os argumentos posicionais $1 , $2 , ... $@ , etc. Não atribui variáveis.

set REPO="$1"
set REV="$2"

deve ser:

REPO="$1"
REV="$2"

(etc)

    
por 19.04.2010 / 16:42
0

Não sei por que você tem todos os comandos set , removê-los e ver se funciona?

    
por 19.04.2010 / 16:37
0
REPO="$1"
REV="$2"

SVNBIN="/opt/CollabNet_Subversion/bin/"
SSHBIN="/usr/bin/ssh"

HOST="staging.domain.net"
timeout=30
USERNAME="svn-usr"

E_NO_CONNECT=2
E_WRONG_PASS=3
E_UNKOWN=25

CHANGED='"$SVNBIN"svnlook changed --revision $REV $REPOS'
.....
PROJECT=""
    
por 19.04.2010 / 16:49