我正在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服务器时,我收到以下消息:
remote:hooks / post-receive:10:hooks / post-receive:语法错误:“(”意外(期待“完成”)
当我尝试在命令行中运行它时,脚本无需此消息即可正常工作。
任何想法?
谢谢,
Elyashiv
答案 0 :(得分:3)
两种可能性:
将#!/usr/bin/env bash
添加到脚本顶部以确保脚本由bash
而不是sh
运行,因为您使用的是数组bash
扩展
停止使用阵列,因为您不能以任何方式使用它,而这些方式很难用简单的以空格分隔的字符串替换。这就是你首先构建阵列的方式。