Использование Sed: Добавить шебанг, отсутствующий в первой строке скрипта

Использование Sed: Добавить шебанг, отсутствующий в первой строке скрипта

У меня есть *.shскрипт, в котором отсутствует шебанг из первой строки. Можно ли это исправить с помощью sed?

решение1

Вставьте ( i) шебанг с sed, на месте операции:

sed -i '1 i #!/bin/bash' file.sh

С резервным копированием исходного файла с .bakрасширением:

sed -i.bak '1 i #!/bin/bash' file.sh

Замените #!/bin/bashна реальный шебанг, который вам нужен.

Пример:

% cat foo.sh
echo foobar

% sed '1 i #!/bin/bash' foo.sh 
#!/bin/bash
echo foobar

решение2

Используя bashи cat(не на месте):

cat <(echo '#!/bin/sh') foo.sh

Или на месте с использованием GNU awk >= 4.1:

awk -i inplace 'BEGINFILE{print "#!/bin/sh"}{print}' foo.sh

Связанный контент