调试shell脚本

Linux shell脚本之调试指导手册 背景 有时我们写好了一个shell脚本,但是执行时最会报一定错误,因此,运维人员可能想在脚本执行时,进行跟踪,或脚本执行前,检查脚本语法,较少脚本出错或帮助改善脚本; 操作 linux系统中,其实shell是有一个真实的调试模式的。在执行一个脚本时,可以有如下4种方式来对脚本进行调试: 1)sh -x script.sh //将执行该脚本并显示所有变量的值。-x参数,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来;另-v参数可边执行脚本,边将执行过的脚本命令打印到标准错误输出。 2)sh -n 阅读详情

如下一个简单的脚本
#!/bin/sh 


number=1


if [ $number = "1" ]; then
        echo "Number equals 1"
else
        echo "Number does not equals 1"
fi


但是,我们经常有这样的经历,提示 “ [: =: unary operator expected” 错误
但又苦于不知道脚本语言如何调试,只能考经验来判断, 以修改脚本。
现在可以通过如下方法来调试了
具体如下:
在脚本最开始处中,添加 "-x"  即可,如下:
#!/bin/sh -x
然后在运行会提示


blwang@blwang-desktop:~$ ./test.sh 
+ number=
+ '[' = 1 ']'
./test.sh: line 5: [: =: unary operator expected
+ echo 'Number does not equals 1'
Number does not equals 1
看到这个就很明显的看到第5行存在的问题。然后修改后,再运行如下:
blwang@blwang-desktop:~$ ./test.sh 
+ number=1
+ '[' 1 = 1 ']'
+ echo 'Number equals 1'
Number equals 1


你也可以使用set命令来开启或关闭脚本的执行跟踪, 
如:set -x 开启脚本跟踪
set +x 关闭脚本跟踪
修改上面的程序:
#!/bin/sh 


number=1


set -x
if [ $number = "1" ]; then
        echo "Number equals 1"
else
        echo "Number does not equals 1"
fi
set +x


blwang@blwang-desktop:~$ ./test.sh 
+ '[' 1 = 1 ']'
+ echo 'Number equals 1'
Number equals 1
+ set +x
Renesas:定时器输入捕获 一、PWM输入捕获 1、Smart Configurator配置 注意:在使用前,需要使能对应的定时器!否侧无法正常进行输入捕获! 2、脉冲宽度的获取 如何区分高低电平的脉冲宽度:最常用的方法就是在触发中断后,判断IO口的高低电平,来确认是上升沿触发的中断还是下降沿触发的中断。 若无法进入中断,可查看:Renesas:配置中断的常规流程 (1)中断方式(Smart Configurator生成的代码) #pragma interrupt r_Config_TAUB0_0_i... 阅读详情

相关推荐

GDI文字绘制和windows下opengl文字绘制小结

GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。 font对象的创建可以由createfont()、createfontIndirect()来实现。 HFONT CreateFont( int nHeight, // height of font int nWidth, // average

T_W_S的专栏 5323

shell脚本中在if语句中比较空串而出现的问题line 5: [: =: unary operator expected

一个shell脚本: #!/bin/sh #ifelif echo "Enter your name: " read NAME if [ $NAME = "" ] || [ -z $NAME ] then   echo "You don't enter your name." elif [ $NAME = "root" ] then   echo "Hello root."

meng_linxi的专栏 1632

GraphRAG + Ollama 本地化部署实战:从零搭建知识图谱问答系统

本文详细介绍了如何在本地部署GraphRAG与Ollama,搭建一个完全自主可控的知识图谱问答系统。通过逐步指导环境配置、项目初始化、核心设置修改以及源码适配,成功将GraphRAG从依赖云端OpenAI API转向本地Ollama服务,并选用qwen2.5:7b和nomic-embed-text模型。该方案有效解决了数据隐私与持续API成本问题,特别适合中小企业构建内部知识库或智能客服系统。

x2y3z4a5b的博客 919

shell脚本报错:“[: =: unary operator expected“解决办法

在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因。把语句改成这样就不会出错了. if [[ $STATUS = "OK" ]]; then echo "OK" fi 究其原因,是因为如果变量STATUS值为空,那么就

weixin_42891455的博客 7527

Dify视觉模型节点避坑指南:我用Qwen2.5-VL做OCR识别时踩过的3个坑(及解决方案)

本文分享了使用Dify平台和Qwen2.5-VL视觉模型进行OCR票据识别时遇到的三个常见问题及解决方案,包括文件变量传递、结构化输出和条件分支判断失效。通过实战经验,帮助开发者优化多模态模型在财务自动化中的应用,提升OCR识别精度和效率。

weixin_29284885的博客 405

医疗器械软件测试输出内容(1)

*单元测试(Unit Testing):**单元测试是软件测试的最底层,用于验证软件中最小的可测试单元——函数、方法或模块。系统测试是在集成测试之后进行的,它对整个系统进行测试,验证系统在不同部分集成在一起后是否满足需求和规格。: 集成测试是在单元测试之后进行的,它关注不同单元之间的交互和集成。对于不同安全级别的软件(IEC 62304 A类、B类、C类),在体系上要求输出的文件内容有所区别。**说明:**将集成测试和软件系统测试合并为一项单一的计划和一组活动是可接收的。

ct745363083的博客 1867

[: -le: unary operator expected 错误

最近在做Shell编程; 一大片的脚本看起来很是壮观,当然要是遇到错误解决也比较眼花; 最近遇到一个小错误找了良久;特记录如下: 运行xx.sh时出现 [: -le: unary operator expected 这个错误 后面经过排查得出错误代码段: declare -i i declare -i s  while [ "$i" -le "10"  ]  do 

漫天雪_昆仑巅 1万+

智能车图像处理24-进阶篇16--三叉路口的判断

这篇文章主要讲述图像处理中如何判断三叉路口并进行补线操作。

taiyuezyh的博客 1万+

unary operator expected解决方法

问题运行报错: ./xxx_Config.sh: line 344: [: !-e: unary operator expected 问题原因分析 shell 脚本中设计中,关系运算符与算术运算符的区别 ////////////////////////////////////////////////////////////////////////////////////// 关系运行算: 错误写法=》if [ !-e $xxx_CONFIG ]; then -e 代表文件存在,! -e 代表文件不存

qq_34418380的博客 1万+

OpenCV入门(一)Python环境的搭建

因为有点Python基础,并且Python是比较好入门的编程语言,所以,机器视觉后面打算在Python这个平台下进行。

小幽余生不加糖 8123

CPU、Core、RISC、ARM等的前世今生

CPU、Core、RISC-V 、ARM、ASIC、FPGA、SOC概念及区分

nxin168的博客 1017

shell脚本调试

访问我的博客主页 Shell 脚本调试方法 我们在使用 Unix-like 系统时, shell编程是必不可少的, 在编写shell脚本的时候也不可避免会产生bug, 所以我们就需要学习shell脚本的调试方法. 1. 直接调试 何为直接调试, 相信大家在编写c/c++程序调试时候都经常会在程序中加一个 printf 用来输出中间值达到调试的效果. 当然, 在shel...

YancyKahn 4008

零基础入门simulink建模仿真--基于Simulink的QPSK调制与解调仿真建模示例

QPSK是一种相位调制技术,将两个比特映射到一个符号上,每个符号对应四个可能的相位之一(0°、90°、180°、270°)。通过Simulink,我们可以通过模块化的建模方式实现QPSK的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的QPSK调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解QPSK调制与解调的基本原理及其应用。所需工具和环境:列出进行QPSK仿真所需的工具和环境。步骤详解。

amy_mhd的博客 1309

Shell脚本调试技巧

脚本调试的主要工作就是发现引发脚本错误的原因以及脚本源代码中定位错误行,归纳汇总了SHELL脚本的总总方法,供大家学习参考。 方式一: 通过echo方式 【功能】: 最简单的调试方法,可以在任何怀疑出错的地方用echo打印变量 【场合】: 所有怀疑可能有问题的地方,省略了所有 【示例】:echo $VAR 方式二: 通过选项方式[-ncxv] -n 【功能】: 读取shell脚本,但不实际执行 【场合】: 用于测试Shell脚本中是否存在语法错误 【示例 】 : bash -n script.sh -c 【

夜空中最亮的星 2532

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Shell脚本调试方法 Shell脚本执行的过程

1Shell脚本调试方法 Shell提供了一些用于调试脚本的选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。-v,一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。-x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。 使用这些选项有三种方法。比如现有如下已获取运行权限脚本文件function.sh:

记一忘三二 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Shell脚本调试方法

一、Shell脚本调试选项 Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。 -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。 -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。 使用这些选项有三种方法(注意:避免几种调试选项混用) 1.在命令行提供参数:$sh -x script.sh 2.脚本开头提供参数:#!...

IT- 研究者 708

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Shell基础之脚本调试

Shell基础之脚本调试(常用方法,应用场景)

qq_64227183的博客 1448

Shell脚本调试

Shell - Shell脚本调试方法 目录 Shell脚本调试选项 ShellCheck ExplainShell bashbd Reference 回到顶部 Shell脚本调试选项 Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。 -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。 -x,提供跟踪执行信息...

JacksonKing的专栏 450

linux shell 脚本调试,调试Bash/Shell脚本的4种方法

跟其他高级语言一样,Bash/Shell脚本也可以进行调试(Debug),学会这些调试技巧对编写和完善脚本有不小的帮助。在本文中,您将学习一些有用的Bash/Shell脚本调试方法:如何使用传统技术如何使用xtrace选项如何使用其他Bash选项如何使用trap最有效的调试工具仍然是经过仔细考虑、明智放置的打印语句。 --布莱恩·克尼根(Brian Kernighan),“面向初学者的Unix”(...

weixin_32525457的博客 1309

Shell脚本调试技术

一. 前言shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路。脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言相比,shell解释器缺乏相应的调试机制和调

john_crash的专栏 1248

测试shell脚本有没有问题 shell脚本测试 shell脚本的调试方法 shell脚本应知应会必知必会

测试shell脚本有没有问题 shell脚本测试 shell脚本的调试方法 shell脚本应知应会必知必会

yiyidumeng的博客 2574

Shell脚本调试的几种方式

脚本调试的主要工作就是发现引发脚本错误的原因以及脚本源代码中定位错误行。归纳汇总了下,调试脚本时,我们可能会用到的几种方式,比如说:最简单的通过echo的方式,通过set -x的方式,比较高端一点的通过trap或bashdb工具来调试脚本。

杰瑞的专栏 4万+

如何调试Shell脚本

http://www.douban.com/note/161255051/ 如何调试Shell脚本 1) 检查语法错误: 一般来说我们可以通过修改shell脚本的源代码,令其输出相关的调试信息来定位错误,那有没有不修改源代码来调试shell脚本的方法呢?答案就是使用shell的执行选,下面是一些常用选项的用法: -n 只读取shell脚本,但不实际执行 -x 进入跟踪方式,显示所执行的每

adaptiver的专栏 2万+

Shell 脚本调试

Shell脚本调试 在Shell脚本开发中,经常碰到一些规范方面的问题,例如忘记使用引号、忘记在if语句末尾处加fi结束等。要注意把复杂的脚本简单化,要思路清晰,分段实现。当执行脚本时出现错误后,不要只看提示的错误行,而要观察整个相关的代码。 为了避免编写的脚本出错,除了在编写脚本时注意规范,排除语法错误,更重要的是利用调试脚本工具。echo命令是最有用的调试脚本工具之一,一般在可能出现问题的脚本中加入echo命令,采用分段排查方式 除了echo命令,bash shell也有相应参数可以调试脚本。 ..

MIsaka的博客 287
上一篇: Shell && vs || operator
下一篇: V8 Binding 笔记
Superr爬爬虫
博客等级 码龄19年 72粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值