shell脚本调试中打开set选项

简介:

  我们在调试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这个变量的每一步的状态和值,如果感兴趣,来试验下吧,这个选项

本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/859129如需转载请自行联系原作者


world77

相关文章
|
1天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
|
2天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
2天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
3天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
20 5
|
4天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
4天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
4天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
13 3
|
10天前
|
弹性计算 运维 监控
|
10天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
10 0