Shell脚本的调试方法

Shell脚本的调试方法

Shell提供了一些用于调试脚本的选项,如下所示:

-n

读一遍脚本中的命令但不执行,用于检查脚本中的语法错误

-v

一边执行脚本,一边将执行过的脚本命令打印到标准错误输出

-x

提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

使用这些选项有三种方法,一是在命令行提供参数

$ sh -x ./script.sh

二是在脚本开头提供参数

    #! /bin/sh -x

第三种方法是在脚本中用set命令启用或禁用参数

    #! /bin/sh
    if [ -z "$1" ]; then
      set -x
      echo "ERROR: Insufficient Args."
      exit 1
      set +x
    fi

set -x和set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。

原文地址:https://www.cnblogs.com/alexzhang92/p/9410685.html

时间: 2024-10-09 08:55:01

Shell脚本的调试方法的相关文章

FTP定时批量下载文件(SHELL脚本及使用方法 ) (转)

ftp -v -d -i -n -g [主机名] ,其中-v 显示远程服务器的所有响应信息:-n 限制ftp的自动登录,即不使用:.n etrc文件:-d 使用调试方式:-g 取消全局文件名.http://blog.itpub.net/20943428/viewspace-630467/ 1. 脚本实例 将以下脚本保存为 getftp.sh #!/bin/bash datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 <<!FTPRUN use

[Android]Recovery调用外部Shell脚本,Shell脚本使用ui_print方法

busybox_bin=/sbin/busybox # 获取PIPE get_outfd(){ if $busybox_bin ls -l /proc/self/fd/21 | $busybox_bin grep -q 'pipe'; then echo 21 else local all_pipe_file=/tmp/all_pipe_file.txt $busybox_bin ls -l /proc/self/fd/ > $all_pipe_file $busybox_bin grep 'p

VxWorks操作系统shell命令与调试方法总结

VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤.思路. 1         Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发环境Tornado的组成结构如下图1.分为主机和目标机系统. 图1 集成开发环境结构图 在Tornado下,调试相关操作在Debug菜单下,包括: 图2 Debug菜单 简单解释各菜单项的功能 1.1        WindShell 1.1.1         简介 Vxworks的Shell分为

shell脚本的调试

-n 只读取shell脚本,但不实际执行 "-n"可用于测试shell脚本是否存在语法错误,但不会实际执行命令.在shell脚本编写完成之后,实际执行之前,首先使用"-n"选项来测试脚本是否存在语法错误是一个很好的习惯.因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本. -c "string" 从strings中读取命令 "-

FTP定时批量下载文件(SHELL脚本及使用方法&#160;)

1. 脚本实例 将以下脚本保存为 getftp.sh #!/bin/bash  datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 <<!FTPRUN user user01 user01  prompt bin cd TXT  lcd /app/info/getftp mget ${datesign}*.txt bye  !FTPRUN  脚本说明:  #!/bin/bash #表明该文本的内容为SHELL命令 datesign=`date

shell脚本的执行方法

1.[[email protected] ~]# echo 'userdir=pwd' >sun.sh[[email protected] ~]# cat sun.shuserdir=pwd[[email protected] ~]# bash sun.sh[[email protected] ~]# sh sun.sh[[email protected] ~]# echo $userdir [[email protected] ~]# . sun.sh[[email protected] ~]

shell脚本--语法篇

条件测试 1.条件测试test或[ ](测试条件是真是假) 例如:字符串比较 #!/bin/bashread datatest "$data" == "hello" //注意等号两边有空格  或者 [ $data == "hello" ]echo $? //上一条命令的运行结果,成功为0,失败为1 例如:两数比较大小 #!/bin/bashdata=200[ $data -eq 100 ]echo $?[ $data -lt 100 ]echo

shell脚本调试技术_转

转自:http://itlab.idcquan.com/linux/SHELL/727128.html 本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值,在脚本中植入调试钩子,使用"-n"选项进行shell脚本的语法检查, 使用"-x"选项实现shell脚本逐条语句的跟踪,巧妙地利用shell的内置变量增强"-x"选项的输出信息等. 一. 前言 shell编程在unix/linux

Shell脚本调试技术

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