脚本移植性的问题和解决思路

本文讲述了将Jenkins服务中的shell脚本移植到Windows环境下,用bat实现的挑战。作者强调了提高脚本移植性的需求,并提出通过创建插件来实现grep、awk、sed等功能,以增强跨平台兼容性。文中分享了设计思路和部分代码,以提升文件操作和内存数据处理的灵活性。
摘要由CSDN通过智能技术生成
昨天遇到一个问题,某台Jenkins服务从Mac移植到Windows,不得不把之前的shell脚本用bat实现,回想以前也遇到过这种情况
  • 代码中调用脚本;
  • Job中调用脚本。
文件操作是比较常用的场景,以前用对于的增、删、改、查的实现比较多,在此基础上可以再丰富些功能,那么想法转化成行动吧
需求点
  • 用代码实现grep,awk,sed等的部分功能,做成插件,可用于日志的过滤、查询、文件数据的查询、统计等,以替代依赖于平台的脚本,提高移植性;
  • 支持对文件的操作,也支持对已存在于内存的字符串进行操作,分为过滤和查询统计两大功能;
  • 作为一个插件,可扩展性要高。
设计和解决思路
  • 设计过滤、查询统计两个接口,使用泛型(规范和扩展);
  • 文件操作和字符串操作实现这两个接口;
部分实现类代码
    /**
     * 设置筛选内容,过滤出包含筛选内容的行
     * @param fname 文件路径
     * @param filter
     * @return 包含筛选内容的所有行
     */
    public String grep(String fname, String filter) {
        String find = "";
        String line;
        try {
            inputStream = new FileInputStream(fname);
            encode = EncodingDetect.getJavaEncode(fname);
            sc = new Scanner(inputStream, encode);
            while (sc.hasNextLine()) {
                line = sc.nextLine();
                if (line.contains(filter))
                    find = find + line + System.getProperty("line.separator");
            }
        } catch (FileNotFoundException e) {
            find = "";
            e.printStackTrace();
        } fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值