Linux shellcheck工具
安装工具
通过linux yum源下载,可能因为yum源的问题找不到软件包,或者下载的软件包版本太旧。
ShellCheck的源代码托管在GitHub上(推荐下载方式):
GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts
对下载的可执行程序压缩包进行解压,将shellcheck可执行命令加入环境变量:拷贝至/bin/下,以方便在任何位置都可以通过tab键补齐shellcheck并使用。
使用shellcheck
#!/bin/bash # 设置编译器和编译选项
COMPILER=arm-linux-gnueabihf-g++ #CPP编译器
COMPILE_FLAGS_JSONCPP="-L /usr/local/lib /usr/local/lib/libjsoncpp.a" #链接 jsoncp库
COMPILE_FLAGS_CGICC="-I /usr/local/cgicc-3.2.20/include -L /usr/local/cgicc-3.2.20/lib -lcgicc" #链接 cgicc库
COMPILE_FLAGS_SQLITE3="-I /usr/local/sqlite3/include/ -L /usr/local/sqlite3/lib/ -lsqlite3" #链接 sqlite3库
COMPILE_FLAGS_OPENSSL="-I /usr/local/arm-openssl-3.0/include/ -L /usr/local/arm-openssl-3.0/lib64/ -lcrypto" #链接 crypto库UPHOLD_TOOLS=uphold_tools
cd $UPHOLD_TOOLS
$COMPILER -o $UPHOLD_TOOLS.cgi $UPHOLD_TOOLS.cpp $COMPILE_FLAGS_CGICC $COMPILE_FLAGS_JSONCPP $COMPILE_FLAGS_OPENSSL
if [ $? -ne 0 ]; thenecho "Error compiling $UPHOLD_TOOLS"exit 1
fi
SYSTEM_REBOOT=system_reboot
$COMPILER -o $SYSTEM_REBOOT.cgi $SYSTEM_REBOOT.cpp $COMPILE_FLAGS_CGICC $COMPILE_FLAGS_JSONCPP
if [ $? -ne 0 ]; thenecho "Error compiling $SYSTEM_REBOOT"exit 1
fi
cd ..
#拷贝.cgi和.sh到radio-gateway中
find $UPHOLD_TOOLS -type f \( -name "*.cgi" -o -name "*.sh" \) -exec cp {} ../radio-gateway/cgi-bin/$UPHOLD_TOOLS \;
if [ $? -ne 0 ]; then echo "Error copy $UPHOLD_TOOLS"exit 1
fi#拷贝web源代码到radio-gateway中
cp -r ../web ../radio-gateway/
rm -rf ../radio-gateway/web/index.html
cp ../web/index.html ../radio-gateway/echo "Compilation and copy successful."
优化建议:
[root@localdomain home]# shellcheck compile.sh In compile.sh line 7:
COMPILE_FLAGS_SQLITE3="-I /usr/local/sqlite3/include/ -L /usr/local/sqlite3/lib/ -lsqlite3" #链接 sqlite3库
^-------------------^ SC2034 (warning): COMPILE_FLAGS_SQLITE3 appears unused. Verify use (or export if used externally).In compile.sh line 11:
cd $UPHOLD_TOOLS
^--------------^ SC2164 (warning): Use 'cd ... || exit' or 'cd ... || return' in case cd fails.Did you mean:
cd $UPHOLD_TOOLS || exitIn compile.sh line 12:
$COMPILER -o $UPHOLD_TOOLS.cgi $UPHOLD_TOOLS.cpp $COMPILE_FLAGS_CGICC $COMPILE_FLAGS_JSONCPP $COMPILE_FLAGS_OPENSSL^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.^--------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.^--------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.Did you mean:
$COMPILER -o $UPHOLD_TOOLS.cgi $UPHOLD_TOOLS.cpp "$COMPILE_FLAGS_CGICC" "$COMPILE_FLAGS_JSONCPP" "$COMPILE_FLAGS_OPENSSL"In compile.sh line 13:
if [ $? -ne 0 ]; then^-- SC2181 (style): Check exit code directly with e.g. 'if ! mycmd;', not indirectly with $?.In compile.sh line 18:
$COMPILER -o $SYSTEM_REBOOT.cgi $SYSTEM_REBOOT.cpp $COMPILE_FLAGS_CGICC $COMPILE_FLAGS_JSONCPP^------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.^--------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.Did you mean:
$COMPILER -o $SYSTEM_REBOOT.cgi $SYSTEM_REBOOT.cpp "$COMPILE_FLAGS_CGICC" "$COMPILE_FLAGS_JSONCPP"In compile.sh line 19:
if [ $? -ne 0 ]; then^-- SC2181 (style): Check exit code directly with e.g. 'if ! mycmd;', not indirectly with $?.In compile.sh line 23:
cd ..
^---^ SC2103 (info): Use a ( subshell ) to avoid having to cd back.In compile.sh line 26:
if [ $? -ne 0 ]; then ^-- SC2181 (style): Check exit code directly with e.g. 'if ! mycmd;', not indirectly with $?.For more information:https://www.shellcheck.net/wiki/SC2034 -- COMPILE_FLAGS_SQLITE3 appears unu...https://www.shellcheck.net/wiki/SC2164 -- Use 'cd ... || exit' or 'cd ... |...https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
[root@localdomain home]# 相关文章:
Linux shellcheck工具
安装工具 通过linux yum源下载,可能因为yum源的问题找不到软件包,或者下载的软件包版本太旧。 ShellCheck的源代码托管在GitHub上(推荐下载方式): GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts 对下…...
FLINK SQL时间属性
Flink三种时间属性简介 在Flink SQL中,时间属性是一个核心概念,它主要用于处理与时间相关的数据流。Flink支持三种时间属性:事件时间(event time)、处理时间(processing time)和摄入时间&#…...
android——Groovy gralde 脚本迁移到DSL
1、implementation的转换 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:*** 转换为 implementation ("com.github.CymChad:BaseRecyclerViewAdapterHelper:***") 2、plugin的转换 apply plugin: kotlin-android-extensions 转换为&#x…...
工程项目管理中的最常见概念!蓝燕云总结!
01 怎么理解工程项目管理? 建设工程项目管理指的是专业性的管理,并非行政事务管理。建设工程项目管理是对工程项目全生命周期的管理,确保项目能够按计划的进度、成本和质量完成。 建设工程项目不同阶段管理的主要内容不同,通常…...
PostgreSQL AUTO INCREMENT
PostgreSQL AUTO INCREMENT 在数据库管理系统中,自动递增(AUTO INCREMENT)是一种常见特性,用于在插入新记录时自动生成唯一的标识符。PostgreSQL,作为一个功能强大的开源关系数据库管理系统,也提供了类似的…...
24-10-13-读书笔记(二十五)-《一只特立独行的猪》([中] 王小波)用一生来学习艺术
文章目录 《一只特立独行的猪》([中] 王小波)目录阅读笔记记录总结 《一只特立独行的猪》([中] 王小波) 十月第五篇,放慢脚步,秋季快要过去了,要步入冬季了,心中也是有些跌宕起伏&am…...
Java—继承性与多态性
目录 一、this关键字 1. 理解this 2. this练习 二、继承性 2.1 继承性的理解 2.1.1 多层继承 2.2 继承性的使用练习 2.2.1 练习1 2.2.2 练习2 2.3 方法的重写 2.4 super关键字 2.4.1 子类对象实例化 三、多态性 3.1 多态性的理解 3.2 向下转型与多态练习 四、Ob…...
打通华为认证实验考试“痛点”:备考指南全解析
华为认证体系中的实验考试环节,尤其是针对高端的HCIE认证,是评估考生实践技能的关键部分。这一环节的核心目标是检验考生对华为设备和解决方案的操作熟练度、技术实施技能以及面对现实工作挑战时的问题解决能力。通过在真实环境中进行的实践操作…...
【软考】子系统划分
目录 1. 子系统划分的原则1.1 子系统要具有相对独立性1.2 子系统之间数据的依赖性尽量小1.3 子系统划分的结果应使数据几余较小1.4 子系统的设置应考虑今后管理发展的需要1.5 子系统的划分应便于系统分阶段实现1.6 子系统的划分应考虑到各类资源的充分利用 2. 子系统结构设计3.…...
【Python】selenium获取鼠标在网页上的位置,并定位到网页位置模拟点击的方法
在使用Selenium写自动化爬虫时,遇到验证码是常事了。我在写爬取测试的时候,遇到了点击型的验证码,例如下图这种: 这种看似很简单,但是它居然卡爬虫?用简单的点触验证码的方法来做也没法实现 平常的点触的方…...
【C++ 真题】B2078 含 k 个 3 的数
含 k 个 3 的数 题目描述 输入两个正整数 m m m 和 k k k,其中 1 < m ≤ 1 0 15 1 \lt m \leq 10^{15} 1<m≤1015, 1 < k ≤ 15 1 \lt k \leq 15 1<k≤15 ,判断 m m m 是否恰好含有 k k k 个 3 3 3,如果满足条…...
蓝桥杯省赛真题——冶炼金属
问题描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续…...
【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】
Mac分享吧 文章目录 DBeaverEE 数据库管理工具 软件安装完成,打开效果图片Mac电脑 DBeaverEE 数据库管理工具 软件安装——v24.21️⃣:下载软件2️⃣:安装JDK,根据下图操作步骤提示完成安装3️⃣:安装DBeaverEE&#…...
数据仓库中的维度建模:深入理解与案例分析
数据仓库中的维度建模:深入理解与案例分析 维度建模是数据仓库设计中最常用的一种方法,旨在简化数据访问、提高查询效率,特别适用于需要对数据进行多维分析的场景。本文将深入探讨维度建模的核心概念、设计步骤以及如何将其应用于实际案例中…...
前端打印功能(vue +springboot)
后端 后端依赖生成pdf的方法pdf转图片使用(用的打印模版是带参数的 ,参数是aaa)总结 前端页面 效果 后端 依赖 依赖 一个是用模版生成对应的pdf,一个是用来将pdf转成图片需要的 <!--打印的--><dependency><groupId>net.sf.jasperreports</groupId>&l…...
中间件有哪些分类?
中间件的分类 中间件是位于操作系统和应用程序之间的软件,它提供了一系列服务来简化分布式系统中的应用程序开发和集成。中间件可以根据其功能和用途被分为不同的类别。以下是中间件的一些主要分类: 1. 通信处理(消息)中间件&am…...
开始新征程__10.13
好久没有更新 csdn 了,身边的人都说 csdn 水,但是在我看来,它在我大一这一年里对我的帮助很大,最近上账号看看,看见了网友评论,哈哈,决定以后还是继续更新,分享自己的学习心得。...
SAP 联合创始人谈Home Office
软件公司 SAP 的家庭办公室规定继续引发激烈争论,其联合创始人哈索-普拉特纳(Hasso Plattner)对此也有明确看法。 沃尔多夫--年初,SAP 首席执行官克里斯蒂安-克莱因(Christian Klein)向员工宣誓 "努力…...
基于Jenkins+K8S构建DevOps自动化运维管理平台
目录 1.k8s助力DevOps在企业落地实践 1.1 传统方式部署项目为什么发布慢,效率低? 1.2 上线一个功能,有多少时间被浪费了? 1.3 如何解决发布慢,效率低的问题呢? 1.5 什么是DevOps? 1.5.1 敏…...
【OpenCV】(一)—— 安装opencv环境
【OpenCV】(一)—— 安装opencv环境 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV 是用 C 编写的,但它也有 Python、Java 和 MATLAB 接口,并支持 Windows…...
解锁DeerFlow:零基础搭建智能研究环境完全指南
解锁DeerFlow:零基础搭建智能研究环境完全指南 【免费下载链接】deer-flow DeerFlow is a community-driven framework for deep research, combining language models with tools like web search, crawling, and Python execution, while contributing back to th…...
vLLM-v0.17.1助力Java微服务:高并发下的模型推理集成方案
vLLM-v0.17.1助力Java微服务:高并发下的模型推理集成方案 1. 引言:当Java微服务遇见大模型推理 最近两年,大模型技术在企业应用中的落地速度远超预期。作为Java开发者,我们可能已经习惯了SpringBoot生态的舒适区,但当…...
不用标注数据!手把手教你用SAM 3和SegEarth-OV3搞定遥感图像分割(附避坑指南)
零标注实战:用SAM 3与SegEarth-OV3实现遥感图像智能分割 当你在处理城市违建排查任务时,面对海量航拍图却找不到足够标注数据;当突发自然灾害需要快速评估受损区域,但现有模型无法识别新型地物——这些正是遥感图像分析中最棘手的…...
LeaguePrank:英雄联盟客户端个性化定制工具深度探索
LeaguePrank:英雄联盟客户端个性化定制工具深度探索 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 在MOBA游戏蓬勃发展的今天,玩家对游戏体验的个性化需求日益增长。LeaguePrank作为一款基于官方LCU A…...
React 转 Vue3 避坑指南:10个思维误区和正确写法
从 React 转来的开发者学 Vue3 最容易踩这10个坑,每个坑都附上错误写法和正确解法。前言React 和 Vue3 都是现代前端框架,但思维模型差异不小。很多 React 开发者转 Vue3 时,习惯性地用 React 思维写 Vue,导致各种奇怪的 bug。本文…...
300FPS的实时目标跟踪是怎么炼成的?手把手拆解KCF算法里的数学魔法
300FPS实时目标跟踪背后的数学魔法:KCF算法深度解密 在计算机视觉领域,实时目标跟踪一直是个令人着迷又充满挑战的问题。想象一下,当你在观看一场足球比赛时,摄像机需要实时锁定某个球员;或者当自动驾驶汽车行驶时&am…...
PMSM无感控制中滑模观测器的相位补偿与抖振优化
1. 滑模观测器在PMSM无感控制中的核心作用 永磁同步电机(PMSM)的无位置传感器控制技术中,滑模观测器(SMO)扮演着关键角色。这种控制方式不需要物理位置传感器,而是通过算法实时估算转子位置和速度。我在实…...
LiuJuan20260223Zimage镜像解析:ComfyUI可视化工作流搭建指南
LiuJuan20260223Zimage镜像解析:ComfyUI可视化工作流搭建指南 你是不是也对那些炫酷的AI图片生成感到好奇,但一看到复杂的代码和命令行就头疼?或者,你已经尝试过一些基础的AI工具,但总觉得它们的功能太单一࿰…...
DeepSeek-V3量化黑科技:w4a8精度反超官方!
DeepSeek-V3量化黑科技:w4a8精度反超官方! 【免费下载链接】DeepSeek-V3-w4a8-mtp-QuaRot-per-channel 项目地址: https://ai.gitcode.com/Eco-Tech/DeepSeek-V3-w4a8-mtp-QuaRot-per-channel 导语:国内大模型量化技术再获突破&#…...
打造高性价比DIY回音壁:从零开始的多媒体音箱制作指南
1. 为什么选择DIY回音壁? 每次看到商场里标价上万元的回音壁音箱,我都会想:这东西真的值这个价吗?作为一个玩了十几年音响的发烧友,我决定用不到500元的预算,打造一套属于自己的高性价比回音壁。你可能不知…...
