获取包含“typeset -r VAR=value”的 shell 脚本
的好方法是什么
修改包含“typeset -r VAR=value”
的脚本 A以使脚本可重复(同时维护语句)
?目前,相关脚本在登录时由用户的 .profile 点缀,然后再次由用户从命令行运行的其他脚本点缀。
事实上,脚本在后续运行中将会出错,因为 VAR 已经是只读的。
uname -a: Linux Demon 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
问题更新:
如果注释掉用户的 .profile
脚本在脚本 A 中添加点,然后登录后,脚本 A 中的点的脚本 B 可以一遍又一遍地运行,没有问题。但是,如果您随后从命令行运行脚本 A,则后续调用脚本 B 会出错。
如何解释这种行为?
- 似乎是因为
.profile
在系统上最大的 shell 中运行,而脚本 B 在临时子 shell 中运行。
它是如何固定的?
- 如何更新脚本 B,以便在尝试设置 VAR 的值并使 VAR 只读之前检查 VAR 的只读性和值?
What is a good way to modify a script A containing
"typeset -r VAR=value"
to make the script repeatable (while maintaining the statement)?
Currently, the script in question is being dotted in by the user's .profile at login time and then dotted in again by other scripts which the user runs from the command line.
As is, the script will error out on subsequent runs because VAR will already be read only.
uname -a: Linux demon 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Problem Update:
If you comment out the dotting in of Script A by the user's .profile
script, then upon login Script B which dots in Script A can be run over and over with no problem. However, if you then run Script A from the command line, subsequent calls of Script B error out.
What explains this behavior?
- Appears to be because the
.profile
runs in the biggest shell on the system while Script B runs in a temporary subshell.
How is it fixed?
- How can Script B be updated so that it checks for the readonlyness and value of VAR before trying to set VAR's value and making VAR read only?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以这样做:
You could do: