Shell 脚本调试

Shell 脚本调试

1、学习脚本开发规范
2、好的编码习惯
提示:
    脚本不是你写的或者windows下开发的脚本,你检查脚本明明没有问题,但就是执行出现错误,要想到执行dos2unix格式化下。
好习惯:每次写脚本都执行dos2unix格式化下。
[root@db02 ~]# dos2unix add.sh    #==>使用dos2unix格式化
dos2unix: converting file add.sh to UNIX format ...
[root@db02 ~]# cat -v add.sh
如果没有dos2unix这条命令,需要使用yum进行安装
[root@db02 ~]# rpm -ql dos2unix
/usr/bin/dos2unix
/usr/bin/mac2unix
/usr/share/doc/dos2unix-3.1
/usr/share/doc/dos2unix-3.1/COPYRIGHT
/usr/share/man/man1/dos2unix.1.gz
/usr/share/man/man1/mac2unix.1.gz
[root@db02 ~]#  yum -y install dos2unix
使用bash命令参数调试
[root@db02 ~]# sh [-nvx] add.sh 
参数:
-n:不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示。
-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误也会给出错误提示
-x:将执行的脚本内容及输出显示屏幕上,这个是对调试很有用的参数。
使用set命令调试部分脚本内容
set命令可辅助脚本调试,以下是set命令常用的调试选项:
set -n 读命令但并不执行
set -v 显示读取的所有行
set -x 显示所有命令及其参数
提示:
1)同bash命令参数功能
2)开启调试功能通过set -x命令,而关闭调试功能通过set +x
shell调试技巧小结
1)要记得首先用dos2unix 对脚本格式化
2)直接执行脚本根据报错来调试,有时报错不准确
3)sh -x 调试整个脚本,显示执行过程(大海捞针困难)
4)set -x和set +x 调试部分脚本(脚本中设置)
5)echo 输出变量及相关内容,然后紧跟着exit退出,不执行后面程序的,对于逻辑错误比较好用
6)最关键的是语法熟练,编码习惯,变成思想,将错误扼杀在萌芽之中,调试负担,提高效率。
设置vim编辑器自动添加作者信息
文章:http://jingyan.baidu.com/article/49711c61535677fa441b7c88.html?qq-pf-to=pcqq.c2c
提示:(此处不是重点,不多说。百度很多。)
Shell帮助与资料推荐
http:www.gnu.org/software/bash/manual/bash.html
man bash
Unix Shell 范例精解(第4版)老男孩推荐
Unix Shell百度云盘下载  密码:3z0x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置固定长度_加气块砌筑(构造柱、圈梁设置)技术交底21条

墙体砌筑技术交底我给下发21条,内容不全,砌筑的墙体观感差,欢迎大家提出宝贵意见1、填充墙的材料、平面位置尺寸见建筑施工图纸,不得随意更改。2、当首层填充墙下无基础梁或结构梁板时,墙下应做基础,基础作…

网页设计表格单元格线条及边框设置

本文关键字:网页,表格,设置 灵活的在网页设计中使用单元格线条及边框,可以大幅提高网页开发的效率,下面我们就来实际分析一下。 图1 网页中的单元格线条示范 其实上面的三个表格都有三行三列,隐藏分隔线的诀窍在于rules&#…

深度优化LNMP之MySQL

MySQL数据库优化框架体系 1.硬件层面优化 2.操作系统层面优化 3.MySQL数据库层面优化 4.MySQL安全优化 5.网站集群架构上的优化 6.MySQL流程、制度控制优化 硬件层面优化 1、数据库物理机采购 CPU: 64位CPU,一台机器2-16颗CPU。至少2-4颗&#xff0…

element vue 纵向滑动条_Vue 部分

1、ES6Vue :1、Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的…

C#集合通论

前言 写这篇文章的最初动力是来自于一次笔试经历。有一道笔试题大概是这样的:程序使用一个txt文件来存储操作记录。存储记录是多行字符串,每一行代表一次操作记录,格式如下:用户名操作事项名称操作时间。现在假设这个txt文件已经非…

Shell 脚本案例实战 [4]

for循环结构for 循环结构语句1.for循环结构:语法:for 变量名 in 变量取值列表do指令…done提示:在此结构中“in 变量取值列表”可省略,省略时相当于in “$”,使用for i 就相当于使用for i in “$”2.C语言型for循环结构…

python后台截屏_Python实现屏幕截图

之前使用Python构建了一个图片转文字小工具,但是使用的是使用系统自带的截图工具然后监听目录变化来实现的。接下来我想直接使用Python来构建一个截图工具,这样就可以结合转换工具使用。构建图形界面本文使用Python自带的GUI库Tkinter来构建图形界面。Tk…

ORACLE 进入sqlplus的协议适配器错误

ORACLE 进入sqlplus的输入用户名密码的时候提示: ORA-12560: TNS: 协议适配器错误 解决方案是在 我的电脑,属性--高级--环境变量---系统变量--新建,变量名oracle_sid,变量值XXXX,XXXX就是你的databaseSID 在网络上查找了一下,似乎…

深度优化LNMP之PHP

PHP缓存加速介绍1.操作码介绍及缓存原理当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个…

pythonenumerate函数_enumerate,enumerate函数的使用方法

这需要使用到度enumitem宏包,这是一个非常有用的宏包,你可以去阅读一下它的文档。它对于自定义编号环境有问很大的帮助。\documentclass[UTF8]{ctexrep}\usepackage{enumitem}\begin{document}Thisisatextfortestingtheindentofenumerateenviornment.Ple…

链接文件

ln [-sf] 原文件 目标文件 如果ln不加任何参数就进行链接,那么就是硬链接,-s是符号链接 -f 如果目标文件存在,就主动将目标文件直接删除后在建立转载于:https://www.cnblogs.com/seasonsstory/p/3152816.html

8g ubuntu 树莓派4b_树莓派4B安装 Ubuntu 20.04 LTS

硬件:Raspberry Pi 4B(4g或8g版本)系统:Ubuntu 20.04 LTS官网:https://ubuntu.com/download/iot/raspberry-piPC:win10相关工具:sd card formatter 5.0.1win32diskManager 1.0下载系统镜像使用sd card formatter格式化…

data矩阵poj 2778 DNA Sequence

最近研究data矩阵,稍微总结一下,以后继续补充: ac自动机处理字符串,dp计算谜底,用矩阵来减速 每日一道理 巴尔扎克说过“不幸,是天才的进升阶梯,信徒的洗礼之水,弱者的无底深渊”。风…

PHP服务Fcgi进程及PHP解析优化

1、PHP引擎缓存加速常见四种软件:1.eAccelerator2.Zendcache3.xcache4.apc5.zendopcache php5.5自带2、使用tmpfs作为缓存加速缓存的文件目录 [rootweb02 ~]# mount -t tmpfs tmpfs /dev/shm -o size256m[rootweb02 ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator…

JS中typeof与instanceof的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。 它返回值是一个字符串,该字符…

电路 晶振频率_都说晶振是电路的心脏,你真的了解它吗?

之所以说晶振是数字电路的心脏,就是因为所有的数字电路都需要一个稳定的工作时钟信号,最常见的就是用晶振来解决,可以说只要有数字电路的地方就可以见到晶振。常见种类我们常说的晶振,包含两种。一种需要加驱动电路才能产生频率信…

my-innodb-heavy-4G.cnf 配置文件参数介绍

温馨提示:本文参考 徐布斯 标准好青年本文章参数使用egrep从mysql配置的目录过滤出来进行分析,参考的两位可能不是my-innodb-heavy-4G.cnf的配置文件参数my-innodb-heavy-4G.cnf[client]#客户端配置 port 3306 #客户端端口号 socket …

手动创建数据库

手动创建数据库步骤:1、准备工作(创建相关目录、设置ORACLE_SID)2、生成参数文件3、启动实例3、脚本创建数据库4、脚本创建数据字典5、打开数据库 一: 准备工作 1、创建相关目录wyncrac为要创建的数据名,所以创建同名目录用来集中存储相关文件[oraclelocalhost wyncrac]$ lltot…

ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序

大家好,今日我们继续讲解数组与字典解决方案,今日讲解第47讲:利用字典和数组,实现按指定规则的排序。随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经…

MVC3学习:利用mvc3+ajax实现登录

用到的工具或技术:vs2010,EF code first,JQuery ajax,mvc3。 第一步:准备数据库。 利用EF code first,先写实体类,然后根据实体类自动创建数据库;或者先创建数据库,再写实体类,都可以。如果实体…