加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix shell代码,可移植到足以在所有shell上运行

发布时间:2020-12-16 01:53:30 所属栏目:安全 来源:网络整理
导读:任何人都可以让我知道编码指南以及Unix shell脚本的代码示例,使用哪些代码可以在大多数当前的shell上运行,如ksh,bash,csh等.大多数时候,我为ksh编写的一些代码会不能正常工作.我想让我的代码最大可移植.我的大多数代码都围绕[ifs,elifs]和[whiles,fors]并返
任何人都可以让我知道编码指南以及Unix shell脚本的代码示例,使用哪些代码可以在大多数当前的shell上运行,如ksh,bash,csh等.大多数时候,我为ksh编写的一些代码会不能正常工作.我想让我的代码最大可移植.我的大多数代码都围绕[ifs,elifs]和[whiles,fors]并返回子shell的代码捕获(主要是运行SQL脚本,我想获得一些返回代码,如处理的行数,返回代码,SQL脚本的错误代码).

也有人可以让我知道哪些shell特定代码可以轻松移植到其他shell?有人能指出我正确的教程和/或示例代码吗?

解决方法

给自己一个 7th Edition Unix Programmer’s Manual (Vol 1)并编程到那里描述的(Bourne)shell表示法.如果能找到合适的手册,您实际上可以升级到System V(Bourne)shell;它有一些额外的功能,比如第7版shell没有的功能,它们基本上可以在任何地方使用. (这是一种非常保守的立场 – 但它会给你最大的便携性.)

另一个问题是选择您使用的命令,以及您对这些命令使用的选项.例如,GNU grep有许多其他地方没有的有用选项. GNU sed类似地具有其他地方没有的扩展.如果您编写shell脚本以使用这些扩展,那么即使shell都正确理解语法,您的代码也将是不可移植的.

我建议了解POSIX标准所说的便携性.大多数系统通常都支持大多数POSIX功能,但每个系统通常会添加一些并非总是可用的额外选项和功能.请注意,POSIX shell确实有一些功能,特别是$(…)命令替换,而不是原始Bourne shell中没有的反向标记.你必须决定更现代的符号所带来的清晰度是否值得(名义上)可移植性的损失.

此外,Autoconf shell指南专注于最大可移植性.但是,结果是一个相当高级的shell脚本版本,不仅仅是因为它必须与m4宏处理器互通,这会导致一些额外的限制.

请注意,编写可与Bourne / Korn / POSIX shell系列和C Shell系列一起使用的可移植shell脚本基本上是不可能的.有strong arguments结束“你不应该在C shell中编写脚本”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读