数百万开发人员编写shell脚本来解决各种类型的任务.我使用shell脚本来简化部署,生命周期管理,安装或简单地作为粘合语言.
我注意到的是没有人真正关心shell脚本的风格和质量.很多团队花了很多时间修复Java,C++,...样式问题,但完全忽略了shell脚本中的问题.顺便说一句,通常没有标准的方法来在特定项目中实现shell脚本,因此可以在代码库中找到许多不同的,丑陋的和错误的脚本.
为了在我的项目中克服这个问题,我决定创建一个通用且足够好的shell脚本模板.我会按原样提供我的模板,以使这个问题更有用.开箱即用的这些模板提供:
参数处理:getopts(最新版本:shell-script-template @ github)
#!/bin/bash
# ------------------------------------------------------------------
# [Author] Title
# Description
# ------------------------------------------------------------------
VERSION=0.1.0
SUBJECT=some-unique-id
USAGE="Usage: command -ihv args"
# --- Options processing -------------------------------------------
if [ $# == 0 ] ; then
echo $USAGE
exit 1;
fi
while getopts ":i:vh" optname
do
case "$optname" in
"v")
echo "Version $VERSION"
exit 0;
;;
"i")
echo "-i argument: $OPTARG"
;;
"h")
echo $USAGE
exit 0;
;;
"?")
echo "Unknown option $OPTARG" …Run Code Online (Sandbox Code Playgroud) 背景
有一个名为Wireshark的着名工具.我已经使用了很多年了.这很棒,但性能是问题所在.通用使用场景包括若干数据准备步骤,以便提取稍后要分析的数据子集.如果没有这一步,则需要几分钟才能进行过滤(Wireshark旁边的大痕迹无法使用).

实际的想法是创建一个更快,更平行,更高效的更好的解决方案,用作数据聚合器/存储.
要求
实际要求是使用现代硬件提供的所有电源.我应该说有一个不同类型的优化空间,我希望我在上层做得很好,但技术是现在的主要问题.根据目前的设计,有几种类型的包解码器(解剖器):
结果
我目前的解决方案是基于JVM的解码器.实际的想法是重用代码,消除移植等,但仍然具有良好的效率.
需要解决的问题
我在各地使用JVM做得对吗?您是否看到了实现最初目标的任何其他优秀和优雅的方法:获得易于编写的高度可扩展且高效的协议解码器?
协议,结果格式等不固定.