Bash 赫斯基-塞德:-我不能与标准输入一起使用

Bash 赫斯基-塞德:-我不能与标准输入一起使用,bash,git,sed,git-husky,Bash,Git,Sed,Git Husky,我有一个钩子,它将在提交消息之前预加JIRA票证号。我希望能够与我的团队的其他成员分享它,这就是我使用赫斯基的原因。它在.git/hooks中工作得很好,但是,在更改文件夹并使用Husky调用它之后,我似乎无法让它工作 我已经看过其他的解决方案,但我不知道如何使用他们自己。我需要某种备份文件来执行此操作吗?如果是,我将如何声明 提交消息的票证号: #!/bin/bash # get branch name branch=$(git symbolic-ref --short HEAD) # r

我有一个钩子,它将在提交消息之前预加JIRA票证号。我希望能够与我的团队的其他成员分享它,这就是我使用赫斯基的原因。它在.git/hooks中工作得很好,但是,在更改文件夹并使用Husky调用它之后,我似乎无法让它工作

我已经看过其他的解决方案,但我不知道如何使用他们自己。我需要某种备份文件来执行此操作吗?如果是,我将如何声明

提交消息的票证号:

#!/bin/bash

# get branch name
branch=$(git symbolic-ref --short HEAD)

# remove ticket text
trimmed=$(echo $branch | sed -e 's:^\([^-]*-[^-]*\)-.*:\1:' -e \
    'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')

# get ticket name (i.e., MJ-204)
jiraTicket=$(echo $trimmed | cut -f2 -d/ | tr '[:lower:]' '[:upper:]')

echo "Prepending '$jiraTicket' to commit message..."
if [[ ! -z $jiraTicket ]]; then
    # $1 is the name of the file containing the commit message
    sed -i.bak -e "1s/^/$jiraTicket\: /" $1
fi
package.json:

...
"husky": {
    "hooks": {
      "pre-commit": "./git-hooks/ticket-number-to-commit-msg"
    }
  }
...
输出:

➜ git commit -am "should prepend 'MJ-498'"
husky > pre-commit (node v10.15.0)
Prepending 'MJ-498' to commit message...
sed: -i may not be used with stdin
husky > pre-commit hook failed (add --no-verify to bypass)
任何帮助都将不胜感激。
谢谢。

sed正在读取stdin这一事实表明
$1
是空字符串。您可以通过正确引用变量和编写
sed-i.bak-e“1s/^/$jiraTicket\:/“${1:?}”