Я думаю, что ваше первое изменение не должно быть жестко закодировано в файле с именем выходного файла. Просто выводите нормально, на стандартный вывод, и когда вы вызываете скрипт, используйте перенаправление.
Например, ваша линия
echo "<html>" > index.html
должно быть просто
echo "<html>"
но когда вы вызываете скрипт, назовите его так:
my-script > index.html
и оболочка поместит вывод в правильный файл. (Это также полезно при тестировании, если вы хотите поместить вывод в тестовый файл.)
Предполагая, что вы используете sh
, вы, вероятно, должны начать свой скрипт с "шебанга":
#!/bin/bash
в качестве первой строки. Подробнее см. Руководство по созданию сценариев Bash .
Как только вы это сделаете, вам не нужно
grep -v index.html
в вашем скрипте, потому что он не должен присутствовать в среде скрипта.
В вашем примере ввода у вас есть запятые, но в реальном мире они будут пробелами. Не проблема, просто исправление вопроса.
С awk
вы, вероятно, можете разделять поля пробелами, используя запятые, а не " "
. Это было бы более читабельным. И не используйте sed
; это необязательно. Вы можете сделать все свои изменения с помощью awk
:
awk '{print $3, $4, $5, $6, "<a href=" $7 ">" $7 "</a>"}'
должен сделать трюк.
Таким образом, движок в вашем скрипте будет состоять только из ls
, переданного в awk
, с echo
, дающим выводу некоторую структуру; и когда вы используете скрипт, перенаправление позаботится о том, чтобы поместить его в файл.