Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Bash скрипт - строчка, которая комментирует сама себя

#bash


Возможно ли написать на bash команду, которая комментирует сама себя в файле?    


Ответы

Ответ 1



Ну например: [vladd@Kenga] [19:49:21] [~] {0,120}$> cat selfmod.sh #!/bin/bash echo start T=$(mktemp -u) && sed '/DELETETHISLINE/s/^/#/' <$0 >$T && rm -f $0 && mv $T $0 echo finish [vladd@Kenga] [19:49:24] [~] {0,121}$> ./selfmod.sh start finish [vladd@Kenga] [19:49:29] [~] {0,122}$> cat selfmod.sh #!/bin/bash echo start #T=$(mktemp -u) && sed '/DELETETHISLINE/s/^/#/' <$0 >$T && rm -f $0 && mv $T $0 echo finish Если нужно не пересоздавать файл, можно так: #!/bin/bash echo start sed -i '/DELETETHISLINE/s/^/#/' "$0" echo finish Оказывается, sed умеет редактировать файл in place, так что получилось даже проще.

Ответ 2



Как мне кажется, я нашёл идеальное решение моей задачи. Тут самое главное переменная $LINENO, которая и показывает номер текущей строки в скрипте. Теперь можно делать скрипт, который после успешного выполнения команды сам себя комментирует. ls && sed -i ''$LINENO' s/^/#/' $0

Комментариев нет:

Отправить комментарий