2

GITで受信後のスクリプトを書いています。

私はそれの最小バージョンを添付しますが、これも失敗します:

generate_email()
{
    for user in $(git config --get-all notifications.users); do
        unset files_to_notify
        for filter in $(git config --get-all notifications.$user); do
            files_to_notify=" $files_to_notify $(git diff-tree --no-commit-id \
                --name-only -r $newrev | grep $filter) "
        done
        files_to_notify=( $files_to_notify )
        if [ -n "$files_to_notify" ]; then
            echo ${files_to_notify[*]}
        fi
    done
}

while read oldrev newrev refname
do
    generate_email $oldrev $newrev $refname
done

このスクリプトを呼び出してgitサーバーにプッシュしようとすると、次のメッセージが表示されます。

リモート:フック/受信後:10:フック/受信後:構文エラー: "("予期しない( "完了"を期待)

コマンドラインで実行しようとすると、このメッセージがなくてもスクリプトは正しく機能します。

何か案は?

ありがとう、

エリャシフ

4

1 に答える 1

3

2 つの可能性:

  1. スクリプトの先頭に追加#!/usr/bin/env bashして、スクリプトがではbashなくによって実行されるようにします。これは、拡張機能shである配列を使用するためです。bash

  2. スペースで区切られた単純な文字列に簡単に置き換えることができない方法で配列を使用しないため、配列の使用を停止します。それが、最初に配列を構築する方法です。

于 2013-02-11T13:59:33.290 に答える