Вариант awk:
gawk '
BEGIN{print "Description of the following table:"}
{print $0}' file > temp && mv temp file
Здесь немного больше работы, чем у sed, потому что у sed есть опция редактирования на месте -i, с помощью которой вы можете напрямую писать в файл.
При запуске, например:
bash -c "echo $ BASHPID; exec sleep 10"
или
echo $ ( echo $ BASHPID; exec sleep 10)
ваша текущая оболочка интерполирует переменную $ BASHPID
до того, как ее увидит второй bash (или подоболочка). Решение состоит в том, чтобы предотвратить расширение этих переменных текущей оболочкой:
bash -c 'echo $BASHPID ; exec sleep 10'
Это команда оболочки, которую вы уже выполняете по ssh
(интерпретируется оболочкой входа в систему удаленного пользователя), нет необходимости запускать другую оболочка поверх этого. Предполагая, что оболочка похожа на Bourne или csh:
echo "$$"; exec sleep 10
должно быть достаточно. Нет необходимости устанавливать bash
на удаленном хосте. ssh
также сообщит о статусе выхода удаленной команды, печатать его не нужно. Но если вам нужно, вы можете сделать:
sleep 10 & echo "$!"; wait; echo "$?"
Не для csh-подобных оболочек, поскольку вместо $?
есть $ status
.
Если вы не можете гарантировать, что оболочка входа в систему удаленного пользователя будет похожа на Bourne, вы можете сделать:
exec sh -c 'sleep 10 & echo "$!"; wait; echo "$?"'
Эта команда должна быть совместима, по крайней мере, с оболочками семейств Bourne, csh и rc.