shell调试
来源:互联网 发布:炫舞时代易语言源码 编辑:程序博客网 时间:2024/05/12 13:50
用法:/bin/bash opt script
在shell脚本第一个添加opt,如#!/bin/bash -v
opt为:
-n 读入所有命令,但不执行 可以进行语法检查
-v 显示所有读入的行,冗余
-x 在命令执行时显示它们的参数,通常被称作shell跟踪,执行跟踪
在跟踪模式下,脚本的每一个命令都严格按它们被执行的形式打印出来,如:
set -x; ls *.sh; set +x
+ ls --color=auto 11.sh 122.sh 12.sh #此行是shell真正执行了的命令
11.sh 12.sh 122.sh
+ set +x
set:针对某一段脚本进行调试
set -x #开启调试
subscript or function
set +x #关闭调试
如果shell自身使用了-v选项,它将执行脚本的所有行,为了只进行语法检查,可以使用-nv
如:/bin/bash -nv scrpit
调试钩子:
1.sh:
#!/bin/bash
Debug()
{
if [ "$DEBUG" = "true" ]; then
echo "good"
if [ "$1" = "on" -o "$1" = "ON" ]; then
set -x
else
set +x
fi
fi
}
Test()
{
Debug on
echo "this is function test"
Debug off
}
执行:export DEBUG=true; bash 1.sh;
------------------------------------------------------
【shell调试选项】
一些常用选项的用法:
-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c "string" 从strings中读取命令
“-n”可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用“-n”选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。
“-c”选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项,如下所示:
sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'
"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来(用于跟踪逻辑),并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。
shell的执行选项除了可以在启动shell时指定外,亦可在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令,如以下脚本片段所示:
$LINENO
代表shell脚本的当前行号,类似于C语言中的内置宏__LINE__
$FUNCNAME
函数的名字,类似于C语言中的内置宏__func__,但宏__func__只能代表当前所在的函数名,而$FUNCNAME的功能更强大,它是一个数组变量,其中包含了整个调用链上所有的函数的名字,故变量${FUNCNAME[0]}代表shell脚本当前正在执行的函数的名字,而变量${FUNCNAME[1]}则代表调用函数${FUNCNAME[0]}的函数的名字,余者可以依此类推。
ref: http://www.cnblogs.com/tekkaman/p/3505038.html
在shell脚本第一个添加opt,如#!/bin/bash -v
opt为:
-n 读入所有命令,但不执行 可以进行语法检查
-v 显示所有读入的行,冗余
-x 在命令执行时显示它们的参数,通常被称作shell跟踪,执行跟踪
在跟踪模式下,脚本的每一个命令都严格按它们被执行的形式打印出来,如:
set -x; ls *.sh; set +x
+ ls --color=auto 11.sh 122.sh 12.sh #此行是shell真正执行了的命令
11.sh 12.sh 122.sh
+ set +x
set:针对某一段脚本进行调试
set -x #开启调试
subscript or function
set +x #关闭调试
如果shell自身使用了-v选项,它将执行脚本的所有行,为了只进行语法检查,可以使用-nv
如:/bin/bash -nv scrpit
调试钩子:
1.sh:
#!/bin/bash
Debug()
{
if [ "$DEBUG" = "true" ]; then
echo "good"
if [ "$1" = "on" -o "$1" = "ON" ]; then
set -x
else
set +x
fi
fi
}
Test()
{
Debug on
echo "this is function test"
Debug off
}
执行:export DEBUG=true; bash 1.sh;
------------------------------------------------------
【shell调试选项】
一些常用选项的用法:
-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c "string" 从strings中读取命令
“-n”可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用“-n”选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。
“-c”选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项,如下所示:
sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'
"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来(用于跟踪逻辑),并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。
shell的执行选项除了可以在启动shell时指定外,亦可在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令,如以下脚本片段所示:
$LINENO
代表shell脚本的当前行号,类似于C语言中的内置宏__LINE__
$FUNCNAME
函数的名字,类似于C语言中的内置宏__func__,但宏__func__只能代表当前所在的函数名,而$FUNCNAME的功能更强大,它是一个数组变量,其中包含了整个调用链上所有的函数的名字,故变量${FUNCNAME[0]}代表shell脚本当前正在执行的函数的名字,而变量${FUNCNAME[1]}则代表调用函数${FUNCNAME[0]}的函数的名字,余者可以依此类推。
ref: http://www.cnblogs.com/tekkaman/p/3505038.html
0 0
- SHELL 调试
- shell 调试
- shell 调试
- 调试shell
- shell调试
- shell 调试
- shell 调试
- Shell调试
- shell调试
- shell调试
- shell 调试
- shell调试
- Shell调试
- Shell调试
- shell调试
- shell学习三十--shell调试
- shell脚本调试技巧
- Shell脚本调试技术
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- Qt for Mac:发布程序(widgets和quick2)
- 写出一个你自己的MVC框架-基于对springMVC源码实现和理解(1):入口所在
- kernel ping pong boot(bootloader kernel 传递参数)
- CSS3资料整合
- shell调试
- startUML画用例图
- ViewPager的setOnPageChangeListener方法详解
- 【Qt 5.3.2】Qt局域网收银软件(Qt+MySQL+小票打印机(58mm)+普通打印机)
- centos下安装git
- HDU(1247):Hat’s Words,BKD_hash
- 汇编程序(MASM)常见错误信息
- 写出一个你自己的MVC框架-基于对springMVC源码实现和理解(2):数据初始化(一)
- otto源代码分析