我们在调试shell脚本的时候,不可以避免的会遇到问题,这个时候,假如我们可以跟踪到脚本到底是哪里问了问题,是哪个变量出了问题,这样就对我们的调试是很有帮助的,这里介绍一个shell里面的跟踪选项这里介绍的是set命令,假设在脚本里面加入set –x ,就能显示脚本运行是的冗余输出,如果在脚本文件中加入了命令set –x ,那么在set命令之后执行的每一条命令以及加载命令行中的任何参数都会显示出来,每一行都会加上加号(+),提示它是跟踪输出的标识,在子shell中执行的shell跟踪命令会加2个叫号(++)。

下面来看看演示脚本:

   1:  [root@centos6 shell]# cat set-x.sh
   2:  #!/bin/bash
   3:  #set -x
   4:  echo -n "Can you write device drivers?"
   5:  read answer
   6:  answer=$(echo $answer | tr [a-z] [A-Z])
   7:  if [ $answer = Y ]
   8:  then
   9:          echo "Wow,you must be very skilled"
  10:  else
  11:          echo "Neither can I,I am just an example shell script"
  12:  fi
  13:  [root@centos6 shell]# sh set-x.sh
  14:  Can you write device drivers?y
  15:  Wow,you must be very skilled
  16:  [root@centos6 shell]# sh set-x.sh
  17:  Can you write device drivers?n
  18:  Neither can I,I am just an example shell script
  19:  [root@centos6 shell]#

上面的脚本内容里面,我吧set –x  这一行注释掉了,我们平时都是看到这种效果,下面我将把set –x 这个选项打开,来看看效果:

   1:  [root@centos6 shell]# sh set-x.sh
   2:  + echo -n 'Can you write device drivers?'
   3:  Can you write device drivers?+ read answer
   4:  y
   5:  ++ echo y
   6:  ++ tr '[a-z]' '[A-Z]'
   7:  + answer=Y
   8:  + '[' Y = Y ']'
   9:  + echo 'Wow,you must be very skilled'
  10:  Wow,you must be very skilled
  11:  [root@centos6 shell]# sh set-x.sh
  12:  + echo -n 'Can you write device drivers?'
  13:  Can you write device drivers?+ read answer
  14:  n
  15:  ++ echo n
  16:  ++ tr '[a-z]' '[A-Z]'
  17:  + answer=N
  18:  + '[' N = Y ']'
  19:  + echo 'Neither can I,I am just an example shell script'
  20:  Neither can I,I am just an example shell script
  21:  [root@centos6 shell]#

嘿嘿,看到了吧,每一行都显示出来,每一个参数的状态和执行到哪一步的值是多少,都可以看的很清楚了吧,我们可以很清楚的看到answer这个变量的每一步的状态和值,如果感兴趣,来试验下吧,这个选项

shell脚本调试中打开set选项相关推荐

  1. shell脚本调试技术

    Shell脚本调试技术 曹 羽中 (caoyuz@cn.ibm.com), 软件工程师, IBM中国开发中心 曹羽中,在北京航空航天大学获得计算机软件与理论专业的硕士学位,具有数年的 unix 环境下 ...

  2. shell 脚本调试

    shell 脚本调试 参数 -x 跟踪脚本 shell 脚本调试参数 -x #BASH [root@74 ~]# bash -x /usr/local/keepalived/haproxy_check ...

  3. 【shell附加课】shell脚本调试方案详解

    文章目录 前言 一. shell脚本开发规范 二. shell脚本调试技巧 1. 使用echo +exit 命令断点调试 2. 使用bash命令参数调优 3. 使用 set 来调试脚本 总结 前言 最 ...

  4. linux脚本怎么获取参数,在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?...

    Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现 ...

  5. shell脚本——调试(-n / -x /-c)

    我们在前面介绍的调试手段是通过修改shell脚本的源代码,从其输出相关的调试信息来定位错误的,那有没有不修改源代码来调试shell脚本的方法呢?有的,那就是使用shell的执行选项,下面将介绍一些常用 ...

  6. crontab执行shell脚本日志中出现乱码

    使用nutch开源的搜索引擎抓取网页信息,通过计划任务crontab执行shell脚本,并将启动信息记录进日志文件,但是每次都会出现乱码,如图所示 经过反复测试,排除了java程序问题,文件权限问题, ...

  7. shell 脚本程序中空格 $符号的使用

    对于很多新学shell脚本程序的人来书说,空格跟$符号的使用一直让人迷迷糊糊,下面我来说说有关于它们的使用情况. 1.定义变量时, =号的两边不可以留空格. eg: gender=femal----r ...

  8. shell脚本编写中的#!shebang详解

    Linux 中的"#!"也就是shebang Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序. 1.              ...

  9. Shell脚本运行中的停止方法

    Linux系统Shell中提交了一个脚本,但是需要停止这个进程,如何处理? 方式1 killall file-flume-kafka 说明:killall是一个命令,不是kill all,file-f ...

最新文章

  1. 将bios还原为默认设置时无法启动windows
  2. java数字转中文_Java程序:输入数字转换成中文输出
  3. 《TCP/IP图解》读书笔记
  4. 图像的zoomfft变换
  5. python中的字符串是什么,一文秒懂Python中的字符串
  6. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车黑线循迹、避障、遥控实验综合程序
  7. 计数问题(洛谷-P1980)
  8. php怎么文字加粗体代码,css怎么实现字体描边效果,html字体加粗加黑代码
  9. Servlet运行原理(Tomcat为例)
  10. Windows核心编程学习一:使用DialogBoxParam显示模式对话框
  11. 构建会员运营管理系统 帮助零售企业数字化转型
  12. python正弦波叠加方波_电赛初探(一)——正弦波、方波、锯齿波转换
  13. 01. Linux 简介
  14. CodeForces 576C Points on Plane 莫队
  15. Ubuntu16.04系统美化
  16. 【ceph】ceph-mds journal模块解读
  17. LabwindowsCVI Excel操作说明及事例
  18. 【项目实战】Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
  19. 百度员工离职总结:资质平庸的人该怎么办?震惊了无数人!
  20. 工程打包是什么意思_项目打包命令的意思

热门文章

  1. HTML+CSS+JavaScript复习笔记持更(二)——列表篇
  2. C语言中malloc函数产生的内存泄漏问题
  3. python3精要(84)-字节码原理及分析(2)
  4. wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
  5. NLP面试时,项目经历要怎么讲?
  6. 【Python】用Python实现十大经典排序算法
  7. 励志:他读书时挣了五十万,找工作时收获阿里腾讯快手等ssp offer
  8. 收藏 | 700页NLP算法在百度、阿里、腾讯等一线大厂的最佳实践!PDF限时领!
  9. GitHub 热榜:这款开源神器可帮您将文本转换为手写文字,并下载为 PDF 格式文件!...
  10. 在线阅读!!机器学习数学精华:线性代数