Primeiro, você está perdendo a linha shebang; a primeira linha deve ler #!/usr/bin/env bash
ou #!/bin/bash
Segundo, você está fazendo suposições sobre qual será o diretório de trabalho atual quando o gancho for executado, portanto, se ele conseguir executar o script mesmo que esteja faltando a linha shebang importante, provavelmente funcionará, mas escreve datefile
em um diretório diferente do que você assumiu. Forneça um caminho absoluto para o arquivo que você deseja gravar.
Por fim, ${filename}
é uma prática ruim, você deve sempre citar as expansões de variáveis para evitar a divisão de palavras e a expansão do nome do caminho: "$filename"
. Além disso, em vez de fazer date | cut ...
, apenas informe a data para gerar apenas os bits que você procura. Por exemplo,
printf 'Commit happened at %s\n' "$(date "+%Y-%m-%d %H:%M:%S")" > "$filename"
Em uma nota lateral, o printf de bash (desde 4.0) também pode gerar strings de datas.
printf 'Commit happened at %(%Y-%m-%d %H:%M:%S)T\n' -1 > "$filename"
man bash | less +/printf
para ler mais sobre printf.