Я видел строку data=$(cat)
в bash script (просто объявляя пустую переменную), и я удивлен, что это может сделать.
Я читал страницы руководства, но у него нет примера или объяснения этого. Это захватывает stdin или что-то еще? Любая документация по этому вопросу?
РЕДАКТИРОВАТЬ: В частности, как черт делает data=$(cat)
, разрешает ему запускать этот hook script?
#!/bin/bash
# Runs all executable pre-commit-* hooks and exits after,
# if any of them was not successful.
#
# Based on
# http://osdir.com/ml/git/2009-01/msg00308.html
data=$(cat)
exitcodes=()
hookname=`basename $0`
# Run each hook, passing through STDIN and storing the exit code.
# We don't want to bail at the first failure, as the user might
# then bypass the hooks without knowing about additional issues.
for hook in $GIT_DIR/hooks/$hookname-*; do
test -x "$hook" || continue
echo "$data" | "$hook"
exitcodes+=($?)
done
https://github.com/henrik/dotfiles/blob/master/git_template/hooks/pre-commit