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