#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
Комментариев нет:
Отправить комментарий