3

Я ищу способ добавить Шебанг #!/bin/csh -f к первой строке моего файла, который фактически создается другим набором программ, поскольку этот сценарий создается автоматически, он должен запускаться из bash, когда пользователь нажимает какую-то кнопку в моем инструменте. Я пытался использовать sed, но это не сработало.

sed ' 1 s/.*/\#!/bin/csh -f/' filename.

и awk

awk 'NR==1{printf "%s %s\n", $0, "#!/bin/csh -f"}' filename

обе эти команды возвращают следующее

/bin/csh is not an event.

Пожалуйста, предложите лучший метод.

Дэн

2 ответа2

1

Попробуйте убежать ! символ, используя \! вместо простого ! , должен дать лучшие результаты. Так что постарайтесь:

sed '1 i\#\!\/bin\/csh -f' filename > out.txt
1

Awk альтернативы

awk 'BEGIN{print "#!/bin/csh -f"} {print}' filename > out.sh

awk 'NR==1{print "#!/bin/csh -f"};{print}' filename > out.sh 

Вариант Xen2050 для изменения файла внутри вместо перенаправления его в out.sh

 sed -i '1 i\#\!\/bin\/csh -f' filename

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .