linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法
新手写了一个 hello world 小脚本,如何能调试运行在 Linux 或者类 UNIX 的系统上的 bash shell 脚本呢?
这是 Linux / Unix 系统管理员或新用户最常问的问题。shell 脚本调试可能是一项繁琐的工作(不容易阅读)。调试 shell 脚本有多种方法。
您需要传递-x或-v参数,以在 bash shell 中浏览每行代码。
让我们看看如何使用各种方法调试 Linux 和 UNIX 上运行的脚本。
-x 选项来调试脚本
用 -x 选项来运行脚本:
$ bash -x fcbu.com.sh
使用 set 内置命令
bash shell 提供调试选项,可以打开或关闭使用 set 命令:
set -x : 显示命令及其执行时的参数。
set -v : 显示 shell 输入行作为它们读取的
可以在 shell 脚本本身中使用上面的两个命令:
#!/bin/bash
# turn on debug mode
set -x
for f in *
do
file $f
done
# turn OFF debug mode
set +x
ls
在脚本的起始位置可以用以下代码调试:
#!/bin/bash -xv
使用bash智能调试功能
首先添加一个叫做 _DEBUG 的特殊变量。当你需要调试脚本的时候,设置 _DEBUG 为 on:
在脚本的开头放置以下赋值和函数:
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@
}
现在,只要你需要调试,只需使用 DEBUG 函数如下:
DEBUG echo "File is $filename"
或者:
DEBUG set -x
Cmd1
Cmd2
DEBUG set +x
当调试完(在移动你的脚本到生产环境之前)设置 _DEBUG为off或非 'on' 的任何字符。不需要删除调试行。
示例脚本:
#!/bin/bash
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@
}
DEBUG echo 'Reading files'
for i in *
do
grep 'something' $i > /dev/null
[ $? -eq 0 ] && echo "Found in $i file"
done
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"
保存并关闭文件。运行脚本如下输出:
Reading files
Found in xyz.txt file
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5
现在设置 _DEBUG 为 off(你需要编辑该文件):
_DEBUG="off"
运行脚本,输出:
Found in xyz.txt file
2 + 3 = 5
以上是一个简单但非常有效的技术。还可以尝试使用 DEBUG 作为别名而不是函数。
linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法相关推荐
- Linux shell 对话框,如何在 Bash Shell 脚本中显示对话框
原标题:如何在 Bash Shell 脚本中显示对话框 这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子.使用这些工具,你的脚本能够 ...
- Linux下如何执行Shell脚本
Linux下如何执行Shell脚本 Linux下你可以有两种方式执行Shell脚本: 1.用shell程序执行脚本:根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等 ...
- 解决Linux下无法利用shell脚本启动conda虚拟环境问题
解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...
- Linux——Bash Shell脚本 for循环
1.创建和执行Bash Shell脚本 (1)借助Bash Shell环境和脚本编写功能,将Linux命令与shell脚本组合在一起,从而轻松的解决重复而困难的实际问题,Bash shell脚本最简单 ...
- Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本
Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本 288月2011 0 主要用于监控 linux 服务器负载及内存占用,如 MySQl.php-fpm,当负载或内存占 ...
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本
Linux系统防CC攻击自动拉黑IP增强版Shell脚本 文章目录 一.Shell代码 二.执行脚本 三.效果测试 四.附加说明 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原 ...
- Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
这篇文章主要介绍了Linux系统防CC攻击自动拉黑IP增强版(Shell脚本),需要的朋友可以参考下 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存 ...
- linux shell 执行目录,bash shell脚本执行的几种方法
bash shell 脚本执行的方法有多种,本文作一个总结,供大家学习参考. 假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一: ...
- linux shell 一行 for,BASH shell脚本回显到同一行输出
我有一个简单的BASH shell脚本,它检查curl命令的HTTP响应代码. 逻辑很好,但我坚持"简单地"打印出"输出". 我正在使用GNU bash,版本3 ...
最新文章
- python优化算法工具包_这可能是史上最全的 Python 算法集(建议收藏)
- springbatch的writer、processor、reader复杂太难用?使用tasklet更方便!
- java semaphore 等待时间_一个java同步工具类Semaphore的详解
- 时隔6年,NASA再造仿人机器人,或将在太空工作,应对严苛环境
- 面向对象编程──走错了路?
- Dropout抑制过拟合
- 史玉柱:我是怎么做游戏策划的
- BCB使用线程删除目录中的图片
- php mysql 命令行模式_phpstudy(mysql命令行的增删改查)
- 第10课:JSP指令 Page指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
- mysql默认编码改为gbk_如何设置Mysql数据库默认的字符集编码为GBK
- 格拉布斯检验法matlab,格拉布斯检验法MATLAB算法
- 新概念英语第二册课文电子版_新概念英语第二册:课文+音频+教学视频合集(可下载)...
- 在字节实习8个月后,成功转正
- 如何让你的程序员不要厌倦工作?
- 快速获取今天是星期几
- VMware pro安装CentOS 7
- java红牛农场答案_Java面向对象程序设计实验指导与习题解答
- CA Server证书申请与颁发 Apache2 HTTPS
- 论文《Face Alignment at 3000 FPS via Regressing Local Binary Features》笔记
热门文章
- IOS的一些文件操作。(沙箱) 在Documents目录下创建文件
- 视频时代的大数据:问题、挑战与解决方案
- 数据中台VS业务中台、数据中台VS数据仓库,到底有什么区别?
- 做决定前别拍脑袋:两个成功案例看懂A/B测试
- 人人都能看懂的机器学习!3个案例详解聚类、回归、分类算法
- LwIP之ICMP协议
- libjpeg移植到arm
- 罗马音平假名片假名转换器_记不住五十音的你,你肯定需要这套日语五十音谐音巧记法...
- python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)
- 4万次下载,我的这本电子书连续数月蝉联阿里云下载榜冠军!!!