shell调试技术

2023-11-12

1. shell调试选项

语法 : sh [-n] [-x] [-v] Sctipt.sh
参数说明:

-n: 检查shell脚本是否有语法错误。只读取shell脚本,但不执行
-x :提供跟踪执行信息,将执行的每一条命令,
		每一个变量的值和结果一次打印出来
-v: 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出

使用方法:
(1)检查脚本语法是否存在错误。调用语法:sh -n ${脚本文件名}

$ sh -n Myscript.sh

还有一种常用的方法。就是将shebang从#!/bin/bash改成#!/bin/bash -xv。这样就可以不用任何其他选项就可以启用调试功能。

2、echo/printf输出调试方法

在认为可能有问题的代码前后使用echo/printf打印出变量值。特别是变量在用作判断条件情况

#!/bin/bash

#echo "The variable num equal:$num"
if [ $num -eq 5 ];then
 echo "The number equal to 5" #假设这条语句没有输出,就把变量num值打出来看看
else
 echo "The number not equal to 5"
fi

3、set -x和set +x调试方法

shell的执行选项除了可以在启动shell时指定外,也可以在脚本中用set命令来指定。 "set -参数"表示启用某选项,“set +参数"表示关闭某选项。有时候我们并不需要在启动时用”-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set -x和set +x对脚本进行部分调试。如以下脚本片段所示:

在这里插入图片描述
执行结果输出如下:
在这里插入图片描述

参考文章:参考文章shell调试技术

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell调试技术 的相关文章

随机推荐

  • DTO与Entity相互转化

    import java lang reflect Method import java util concurrent ConcurrentHashMap import org slf4j Logger import org slf4j L
  • 关于path用变量的问题思考

    1 用go解析路由时 中间件里相对路由做统一处理 或者是对于一组路由做处理 只能挨个正则去匹配 要不就多写代码 侵入业务 2 路由不可读 命名再不规范的话 抓包也痛苦 需要看代码才能理解这个接口是做什么的 和前端对接口时 前端 接口名字是什
  • 微服务回归单体,代码行数减少75%,性能提升1300%

    关注并星标腾讯云开发者 每周3 谈谈我在腾讯的架构设计经验 第5期 李浩津 13倍性能重构 搜索内容架构 C 微服务群改造 内容架构是 QQ 浏览器搜索的内容接入和计算层 主要负责腾讯域内的内容接入和处理 当前接入了多个合作方的上千类内容
  • leaflet可视化平台搭建

    leaflet viz Leaflet可视化平台 https github com zrysmt leaflet viz leaflet是一个开源的前端地图交互类库 比较轻量级 支持移动端 而且有丰富的插件资源可供我们使用 Echarts是
  • matplotlib绘制3d图形出现空白,解决办法

    如果出现如下图空白 或者出现下面报错MatplotlibDeprecationWarning Axes3D fig adding itself to the figure is deprecated since 3 4 Pass the k
  • 三大框架 之 Hibernate查询(一对多、多对多、查询关系)

    目录 一对多 表之间关系 表之间关系建表原则 一对多关系配置 建立表 建立ORM 添加配置文件 在hibernate cfg xml中的标签里 添加核心配置文件 引入工具类 编写测试类 级联操作 什么是级联 级联分类 级联是有方向性 级联保
  • openfeign使用报错:No Feign Client for loadBalancing defined.

    错误描述 nested exception is java lang IllegalStateException No Feign Client for loadBalancing defined Did you forget to inc
  • DDR中的ODT功能详解及波形对比

    ODT on die termination 即为片内端接 就是将端接电阻放在了芯片内部 这个功能只有在DDR2以上的数据信号才有 而有了ODT功能 原本需要在PCB板上加串联电阻的数据信号就不需要再额外添加端接了 只需要芯片内部打开ODT
  • 敌兵布阵

    http acm hdu edu cn showproblem php pid 1166 Problem Description C国的死对头A国这段时间正在进行军事演习 所以C国间谍头子Derek和他手下Tidy又开始忙乎了 A国在海岸线
  • java将两个有序链表合并成有序链表

    利用递归法将两有序链表合并成链表 且合并后的链表仍然有序 比较链表1和链表2的第一个结点数据 如果head1 data
  • DDoS攻击重大历史事件

    历史上有名ddos的攻击事件很多 涉及行业包括政治 经济 军事等各个行业 下面列举一下2016年比较有名的几起DDOS事件 1 暴雪DDoS攻击 LizardSquad组织对暴雪公司战网服务器发起DDoS攻击 包括 星际争霸2 魔兽世界 暗
  • ARM 异常介绍

    一 中断概念 CPU 在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程 硬件引起的中断不可预测 随机性 软中断 事先在程序中安排特殊指令 CPU 执行到该类指令时 转去执行相应的一段预先安排好的程序 然后再返回来执行原来的
  • 用三元操作符替代if-else以降低CPU分支预测惩罚实现Unity内函数13倍提速

    测试对象 1 C Unity脚本 2 C DLL mcs build的动态链接库再导入Unity 3 C Native Code LLVM编译后导入Unity 被测试函数源码 两个随机数数组进行大小比较 一个数组保存大数 另一个保存小数 C
  • 动态IP代理是什么?一文看懂动态代理IP

    一 什么是动态IP代理 动态IP代理是一种代理服务 而动态IP是由ISP动态分配给用户的IP地址 这些IP地址会周期性地更改 每次链接互联网时 用户会被分配一个新的IP地址 因而也称为 轮换IP IP地址轮换是一个过程 您的IP 地址 网络
  • Unity教程:GUI 界面开发

    UI概述 UI永远是显示在屏幕的最前面上 不受变形 碰撞 光照的影响 GUI概述 GUI是Graphical User Interface的缩写 Unity的图形界面系统能容易和快速创建出各种交互界面 与传统的方法 创建GUI对象 标出位置
  • 神经网络之VGG

    目录 1 VGG的简单介绍 1 2结构图 3 参考代码 VGGNet 16 架构 完整指南 卡格尔 kaggle com 1 VGG的简单介绍 经典卷积神经网络的基本组成部分是下面的这个序列 带填充以保持分辨率的卷积层 非线性激活函数 如R
  • C# WinForm扩展控件TextBox底部下划线展示

    在winform项目中 新建一个类 TextBoxLine 然后编译项目 打开工具箱就可以看到控件了 代码 using System using System Collections Generic using System Compone
  • Midjourney 动画全参数提示(为 Niji V5 更新)使用 Midjourney 生成动画有两种方式:使用 Niji 模式或使用标准 Midjourney 模型,参数教程(第一节)

    Niji V5 Niji 模式的最新版本 是 Midjourney 的专门针对动画的模型 它建立在与标准 Midjourney 模型完全不同的架构上 更擅长生成具名动画角色 Niji V4 于 2023 年 12 月发布 Niji V5 于
  • gitee将本地项目更新到远程仓库指定的分支上

    1 首先看自己在哪个分支 git branch a 2 然后将代码放到暂存区 git add 3 然后git commit m 提交 到本地库 git commit m 问卷管理 4 然后git pull origin jieer 5 gi
  • shell调试技术

    1 shell调试选项 语法 sh n x v Sctipt sh 参数说明 n 检查shell脚本是否有语法错误 只读取shell脚本 但不执行 x 提供跟踪执行信息 将执行的每一条命令 每一个变量的值和结果一次打印出来 v 一边执行脚本