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

Скажем в качестве примера, что я хотел написать файл сценария, который не только содержал бы счет того, сколько раз он был вызван, но и усреднил время, когда он был вызван с первого раза. и сделать это, не полагаясь на переменные среды или вторичные файлы. И сообщите количество прошедших дней. Это будет означать, что это должно быть самоизменяющимся. Теперь, когда скрипт загружается и выполняется, сохраненная версия на диске может быть изменена без воздействия на копию в памяти, так что это работает или должно работать. Просто измените копию в файле.

Но сделать это может быть немного сложно. Так какое ваше лучшее решение?

1 ответ

Звучит немного странно, но bash-скрипт - это просто текст, поэтому вы всегда можете отредактировать его, если у вас есть разрешение:

Возьмите этот пример:

#!/bin/bash
VAR=1
let VAR=VAR+1
echo Set to $VAR
perl -pi -e 's/^VAR=\d+/VAR='$VAR'/' $0

Опробовать это:

$ /tmp/foo.sh
Set to 9
$ /tmp/foo.sh
Set to 10
$ /tmp/foo.sh
Set to 11
Другие вопросы по тегам