【问题标题】:bash can you write a script file that modifies itself for the next time it is called? [closed]bash 你能写一个脚本文件在下次调用时修改自己吗? [关闭]
【发布时间】:2015-11-13 18:41:16
【问题描述】:

举个例子,我想编写一个脚本文件,它不仅可以计算它被调用的次数,还可以计算自第一次调用以来的平均时间。并在不依赖环境变量或辅助文件的情况下做到这一点。并报告过去的天数。这意味着它必须是自我修改的。现在,当加载并执行脚本时,可以更改磁盘上保存的版本,而不会影响内存中的副本,这样就可以了,或者应该。只需更改文件上的副本即可。

但是实现它可能有点棘手。那么你最好的解决方案是什么?

【问题讨论】:

  • 为什么要这样做?为什么不使用辅助文件?这个脚本不是一个很好的 UNIX 公民。例如,我的系统有一个只读文件系统,其中只有 /var/tmp 是可写的。脚本大多存储在/bin/usr/bin中,不能轻易修改。

标签: bash counter self-modifying


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多