为什么这个脚本不接受任何参数?

我正在尝试编写一个SVN后提交钩子,奇怪的是,挂在什么应该是最简单的部分。

剧本:

#!/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 "" 

然而,当我这样称呼它时,似乎没有看到我传递给它的论点:

 /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 

这是在Solaris 10 SPARC盒子上。

我是一个脚本新手,但这不是很容易?

set不会做你认为它做的事:它修改位置参数$1$2 ,… $@等,它不分配variables。

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

应该:

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

(等等)

我不知道为什么你有所有这些set命令,删除它们,看看是否有用?

 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=""