Sed-Verwendung: Shebang hinzufügen, das in der ersten Zeile des Skripts fehlt

Sed-Verwendung: Shebang hinzufügen, das in der ersten Zeile des Skripts fehlt

In meinem *.shSkript fehlt der Shebang in der ersten Zeile. Kann ich das mit beheben sed?

Antwort1

iFügen Sie den Shebang mit ein ( ) sed, In-Place-Operation:

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

Beim Sichern der Originaldatei mit der .bakErweiterung:

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

Ersetzen Sie es #!/bin/bashdurch das tatsächlich gewünschte Zeug.

Beispiel:

% cat foo.sh
echo foobar

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

Antwort2

Verwenden von bashund cat(nicht an Ort und Stelle):

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

Oder direkt mit GNU awk >= 4.1:

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

verwandte Informationen