【发布时间】:2020-06-04 09:40:51
【问题描述】:
我有以下预提交钩子:
#!/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 中的整个目录/文件树具有读/写权限并且属于我的用户。
【问题讨论】:
-
filename=basename "$file"你需要一个$( )但也可以用 P.E. 来完成。filename=${file##*/} -
但这不是唯一的问题,试试这个网站来验证 shell 脚本。 shellcheck.net
标签: bash git githooks pre-commit-hook