首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可自行编辑的Bash脚本

可自行编辑的Bash脚本
EN

Stack Overflow用户
提问于 2010-07-03 02:56:38
回答 4查看 5.6K关注 0票数 2

我正在尝试编写一个可以自我编辑的bash脚本。我尝试使用的代码行是:

代码语言:javascript
复制
sed "s/$STRING_TO_REPLACE/$NEW_STRING/" < $0 > $0

但是在运行脚本之后,我最终得到了一个空文件。有什么建议吗?

我正在创建一个脚本,它有两个包含默认值的变量。唯一的问题是,这些缺省值对于将使用它的许多站点中的每一个都是不同的。我宁愿运行这些站点的人都不必打开脚本并自己编辑默认值,所以我想包括在脚本中更改默认值的能力。我的一个要求是脚本必须是自包含的;没有其他文件伴随脚本,并且没有环境变量。这将要求脚本能够自我编辑。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-03 03:00:58

如果要使用sed进行就地替换,请使用-i开关。

我不建议在运行时重写当前执行的脚本。我不确定这是否可能,但如果它是可能的,它肯定是有趣的(阅读:困难)代码维护:-)

票数 2
EN

Stack Overflow用户

发布于 2010-07-03 03:03:19

首先,这是一个非常糟糕的想法,我无法想象它的任何用例都不能被其他东西覆盖。

发生这种情况的原因是,当您执行>file时,它将以读取模式打开文件并将其截断为0长度,并且输入没有要读取的内容。您需要使用临时文件。你可以在here上看到更多信息。

票数 1
EN

Stack Overflow用户

发布于 2013-09-19 00:32:47

我正在做的,也是我推荐的,是有一个配置文件($HOME/.myscript.cfg),让你的脚本检测它的存在(和版本)并相应地创建/更新它。这样,第一次运行可以提出问题,随后的运行可以完成自己的工作,而不会因为重复的问题而困扰操作员。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3168402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档