Bash 提交消息钩子中缺少提交消息文件

Bash 提交消息钩子中缺少提交消息文件,bash,git,githooks,pre-commit-hook,commit-message,Bash,Git,Githooks,Pre Commit Hook,Commit Message,我正在尝试编写一个commit msg钩子,以将我的提交消息格式化为最大列宽: #/bin/bash 格式\最大\列\宽度(){ 最大线长度字符数=50 cat“$1”| grep-v“^Bug:|^更改Id:|^签名人:| ^CC:“>正文 cat“$1”| grep“^Bug:|^更改Id:|^签署人:| ^CC:“>页脚 fmt-w“$MAX_LINE_LENGTH_CHARS”主体>主体 猫身>“$1” 猫脚>>“$1” rm正文页脚 } 格式\最大\列\宽度 出于某种原因,当我进行提

我正在尝试编写一个commit msg钩子,以将我的提交消息格式化为最大列宽:

#/bin/bash
格式\最大\列\宽度(){
最大线长度字符数=50
cat“$1”| grep-v“^Bug:|^更改Id:|^签名人:| ^CC:“>正文
cat“$1”| grep“^Bug:|^更改Id:|^签署人:| ^CC:“>页脚
fmt-w“$MAX_LINE_LENGTH_CHARS”主体>主体
猫身>“$1”
猫脚>>“$1”
rm正文页脚
}
格式\最大\列\宽度
出于某种原因,当我进行提交时,会出现以下错误,因为$1似乎是空的

cat: '': No such file or directory
cat: '': No such file or directory
.git/hooks/commit-msg: line 9: : No such file or directory
.git/hooks/commit-msg: line 10: : No such file or directory

此外,如果我只是
echo$1
,则不会打印任何内容,从而证实了这一理论。发生了什么?

在shell函数
$1
中,表示“函数的第一个参数”,而不是脚本。您需要将第一个脚本参数进一步传递给函数:

format_max_column_width "$1"