【发布时间】:2016-05-16 07:51:49
【问题描述】:
我有一个要求,solaris 上的所有脚本都需要复制粘贴到 linux 上。我需要这样做,记住脚本应该是 linux 兼容的。我不知道如何检查这些现有脚本的兼容性。请注意,我没有准备好 linux 环境,我们正在收集所有此类类型的数据,请帮助。
谢谢 阿比纳夫
【问题讨论】:
我有一个要求,solaris 上的所有脚本都需要复制粘贴到 linux 上。我需要这样做,记住脚本应该是 linux 兼容的。我不知道如何检查这些现有脚本的兼容性。请注意,我没有准备好 linux 环境,我们正在收集所有此类类型的数据,请帮助。
谢谢 阿比纳夫
【问题讨论】:
您将无法保证,存在太多潜在差异:
* 调用 Solaris 特定工具的脚本。
检查(grep)你的脚本调用/bin/*和/usr/bin
* 在 Linux 上调用具有不同选项的实用程序的脚本
大多数时候,Linux 实用程序(grep、sed、awk、date)会有更多选项。尝试安装和使用 GNU 实用程序,或者希望 Linux 也支持 Solaris 上的基本选项。
* ksh 或 bash
如果可以,请尝试在 Solaris 上安装和使用 bash。
注意while循环(见https://stackoverflow.com/a/5061255/3220113)。
更新:
我自己的经验:
我已经将很多脚本从 Solaris 迁移到 AIX,都是 ksh。我遇到的问题主要是:
* 当 $var 为空时,if [ -z $var ] 在 AIX 上失败(使用 if [ -z
"$var"])。
* 没有sed -i 选项我在原地编辑文件
使用vi file <<@
从远程脚本调用时这不起作用,它缺少正确的 $TERM
* crontab 脚本没有查看 /etc/environment(特定于 AIX)
* AIX 上日期的自制时区中的 DST 运行不正常。
* 不同的目录(数据库分布!)
* 在启动 java 脚本之前要设置的其他 Java 类和类路径
* 与邮件服务器的连接工作方式不同。
最近我只与bash 合作。终于解脱了! find 在几分钟内支持 mtime,date 可以跳天,grep 有漂亮的选项,甚至 awk 已经找到了进入我的工具箱的方式。对于 bash,请记住您永远不会进入 while 循环。
当然,您希望对您将要完成的工作进行估算。当您需要移植过去 3 年中自己编写的脚本时(因此您了解他们的工作,并且数量约为 2 年的工作量 - 您肯定也做过其他事情),我个人的猜测是大约 4 个月的编程和测试。
【讨论】:
man 页面无济于事。您可以尝试阅读 http://mywiki.wooledge.org/BashFAQ 页面或在 shellcheck.net 上测试您当前的一些脚本,并尝试了解脚本上的 cmets。