echo
печатает новую строку. Используйте команду, которая этого не делает: это может быть echo -n
, в зависимости от вашего echo
года изготовления вина, или printf
, если оно у вас есть, выполнит:
echo -n "text " | cat - $COMMIT_MSG_FILE > /tmp/out && mv /tmp/out $COMMIT_MSG_FILE
метод dGot14U с использованием Подстановка команды тоже работает. Также рассмотрите возможность использования на месте sed
:
sed -i '' '1s/^/text /' $COMMIT_MSG_FILE
Необходим ли и когда -i
отдельный аргумент для пустой строки ''
, как показано здесь, зависит от ОС: MacOS sed
требует один, Linux sed
запрещает один. Я использовал это в сценариях:
if sed --version >/dev/null 2>&1; then
# apparently this is gnu sed, so -i requires the extension attached
sedinplace="-i"
else
# apparently this is BSD/MacOS sed, so -i requires a separate argument
sedinplace="-i ''"
fi
# ...
sed $sedinplace -e cmd1 -e cmd2 $file
Затем $sedinplace
расширяется до нужной вещи.