5
|
Jon Ericson Homunculus Reticulli · 技术社区 · 16 年前 |
![]() |
1
13
使用shell脚本是很好的,当你使用它们的优势时。我公司有5级软交换,呼叫处理代码和配置接口是用Java编写的。其他的一切都是用ksh-db dumps编写的,用于备份、修剪、日志文件旋转和所有自动报告。我认为,所有这些支持功能,尽管与调用路径没有直接关系,但都是关键任务。尤其是数据库交互。如果数据库交互代码出了问题,并丢弃了调用路由表,那么它可能会使我们破产。 但是没有什么会出错,因为shell脚本是这种东西的完美语言。它们很小,很容易理解,操纵文件是它们的优势,而且它们很稳定。不像ksh09会被完全重写,因为有人认为它应该编译成字节代码,所以它是一个稳定的接口。坦率地说,用Java编写的配置界面非常不正常,shell脚本从来没有搞错。 |
![]() |
2
6
我认为这篇文章指出了不使用shell脚本的一个非常好的原因列表——对于单个任务关键型项目,你指出的更多是基于所有其他项目的结论。 有了这一点,我认为您不想在shell脚本上构建任务关键型应用程序的原因是,即使其他要点都不适用 今天 ,任何将在一段时间内维护的应用程序都将 发展 到了被这些潜在陷阱中的至少一个在某一点上咬下去的地步……而且没有一个完整的解决办法,你们就没有什么真正能做的了……希望你们从一开始就使用一些更工业的力量。 |
![]() |
3
5
显然,这是一个有点草率的人,我要打倒。我真的很感兴趣,为什么人们认为应该在“关键任务应用程序”中避免使用shell脚本,但我想不出一个令人信服的理由。 例如,我看到(并编写了)一些使用SQL*Plus与Oracle数据库交互的ksh脚本。遗憾的是,由于查询没有使用绑定变量,系统无法正确缩放。打击一个壳脚本,对吗?错了。问题不在shell脚本上,而是在SQL*plus上。事实上,当我用一个连接到数据库并使用绑定变量的Perl脚本替换SQL*plus时,性能问题就消失了。 我可以很容易地想象将shell脚本放入航天器飞行软件中是个坏主意。但是Java或C++可能是一个同样糟糕的选择。最好的选择是任何语言(汇编?)通常用于此目的。 事实上,如果您使用任何风格的Unix,那么假设您认为启动是任务关键的,那么您将在任务关键的情况下使用shell脚本。当一个脚本需要做一些shell不擅长的事情时,您将该部分放入子程序中。你不会把剧本批发出去的。 |
![]() |
4
5
脚本只不过是计算机程序。有些人会认为剧本不够复杂。这些人通常会承认,你可以用脚本语言编写复杂的代码,但这些脚本实际上不再是脚本,而是完全成熟的程序。 无论什么。 在我看来,正确的答案是“视情况而定”。顺便说一句,这与反过来的问题是相同的答案,即您是否应该信任为关键任务应用程序编译的可执行文件。 好的代码是好的,坏的代码是坏的——不管它是作为bash脚本、windows命令文件、python、ruby、perl、basic、forth、ada、pascal、common lisp、cobol还是compiled c编写的。 哪个是 不 说语言的选择无关紧要。 有时,有非常好的理由来选择特定的语言或进行编译和解释(性能、可伸缩性、功能、安全性等)。但是,一切都是平等的,我相信一个伟大的程序员编写的shell脚本,而不是一个星期任何时候由DoFUS编写的等效C++程序。 |
![]() |
5
2
可能是shell脚本帮助公司 进入之内 未来。我只是从编程的角度知道,我会浪费很多时间来做我委托给shell脚本的重复任务。例如,我知道命令行的大多数颠覆命令,但是如果我能将所有这些命令集中到一个脚本中,我就可以随意地启动命令,这样可以节省时间和精力。 像其他一些人所说的语言是一个因素。简而言之,我不想记住步骤和粘合程序,我完全信任shell脚本并依赖它们。这并不意味着我要建立一个在后端运行bash的网站,但是我肯定会使用bash/ksh/python/任何东西来帮助我生成框架项目和管理我的打包和部署。 |
![]() |
6
2
当我读到这句话的时候,我关注的是 应用 “部分”而不是“关键任务”部分。
我读它是说bash不适合编写脚本应用程序。所以,当然,您的应用程序可能有一些内务管理脚本,但不必编写
|
![]() |
7
0
我敢打赌,作者表明他们对QualtiWrt shell脚本的某些方面不满意。例如,WHO单元测试bash脚本。 此外,脚本与底层操作系统的耦合程度相当高,这可能是一种负面影响。 |
![]() |
8
0
无论我们都是一个fexible工具来与操作系统交互。它是一个人类可读的与我们使用的操作系统的交互,就像使用螺丝刀和螺丝一样。命令行始终是一个atool,我们需要管理员、程序员或网络。看看他们在PowerShell上扩展的窗口。 |
![]() |
9
-2
脚本不适合实现某些关键任务功能,因为它们必须同时具有+R和+X权限才能运行。可执行文件只需要有+X。 一个脚本有+R意味着用户可以复制脚本,编辑/破坏它,并执行他们编辑的布谷鸟蛋版本。 |
|
Batavia · Bash-删除大目录中的文件 1 年前 |
![]() |
stackbiz · 如何在bash中将所有换行符替换为“\n” 1 年前 |
![]() |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |