预提交挂钩权限在脚本内部被拒绝

Pre-commit hook permission denied inside script

我有以下预提交挂钩:

#!/bin/bash

set -e

result=''

for file in $(find rest/src/main/groovy/ru/naumen/modules -name '*.groovy' | sort); do
    filename=basename "$file"
    result+=echo "${filename//.groovy/}",
done

result+='smpUtils'

sed -i -r "s|modules = .*|modules = $result|g" rest/smpsync.ini

git add rest/smpsync.ini

我在第 8 行收到 Permission denied 错误

filename=basename "$file"

而且我无法确定其中的原因。

Hook本身有执行权(chmod +x .git/hooks/pre-commit)

./rest/src/main/groovy/ru/naumen/modules 中的整个 directories/files 树拥有 read/write 的权利并且属于我的用户。

试试看:

filename="$(basename "$file")"

为了在你的 filename 变量中得到 command basename 的结果。

@VonC 在变量赋值中提到问题 #1

filename=basename "$file" -> filename=$(basename "$file")

问题 #2 在第 #9 行(我刚刚删除了 echo):

result+=echo "${filename//.groovy/}", -> result+="${filename//.groovy/}",