首页 > 系统相关 >linux shell 函数与脚本调试

linux shell 函数与脚本调试

时间:2023-08-20 15:33:09浏览次数:40  
标签:shell 函数 使用 echo set 调试模式 linux 调试

**函数:**

1. **函数定义**:

使用 `function` 关键字或者直接写函数名来定义函数。

function my_function() {
echo "函数内容"
}

my_function() {
echo "函数内容"
}

2. **函数调用**:

直接使用函数名来调用函数。

my_function

3. **函数参数**:

可以在函数中使用参数来传递值。

greet() {
echo "Hello, $1"
}

greet "Alice"

4. **返回值**:

使用 `return` 语句来返回值给调用者。

calculate() {
result=$((num1 + num2))
return $result
}

calculate
echo "结果为: $?"

调试:**

1. **输出调试信息**:

使用 `echo` 输出调试信息,以便观察程序执行过程。

echo "正在执行..."

2. **设置调试模式**:

使用 `set -x` 开启调试模式,会输出每行执行的命令。

#!/bin/bash
set -x
echo "调试模式启动"

3. **调试时暂停**:

使用 `read` 命令来暂停脚本的执行,以便观察输出。

echo "执行到此暂停"
read

4. **调试完成**:

使用 `set +x` 关闭调试模式。

set +x
echo "调试模式关闭"

5. **脚本位置变量**:

使用 `$0` 获取脚本名,`$1`、`$2` 等获取参数。

echo "脚本名: $0"
echo "第一个参数: $1"

6. **错误输出**:

使用 `2>` 将错误输出导向文件,以便查看错误信息。

./myscript.sh 2> error.log

7. **调试变量**:

使用 `set -x` 启用调试模式后,可以看到每行执行的命令及其参数的值。

set -x
var="Hello"
echo "变量值: $var"
set +x

8. **调试特定部分**:

使用 `set -x` 和 `set +x` 来仅在需要的部分启用和关闭调试模式。

# 调试模式启用
set -x
echo "这里启用了调试模式"
set +x

9. **输出变量值**:

使用 `echo` 输出变量的值,以确保其在运行时正确。

echo "变量 var 的值为: $var"

10. **调试语句块**:

使用花括号 `{}` 将需要调试的代码块括起来。

{
set -x
# 需要调试的代码
set +x
}

11. **调试工具**:

使用工具如 `bash -x script.sh` 或者调试器 `bashdb` 进行更高级的调试。

12. **调试器工具**:

使用工具如 `bashdb` 来进行更高级的脚本调试,支持断点等功能。

13. **错误处理**:

使用 `set -e` 开启错误终止模式,一旦发生错误脚本会终止执行。

set -e
echo "这里是一行错误的命令"
echo "这行不会执行"

14. **忽略错误**:

使用 `command || true` 来执行命令,即使发生错误也不会终止脚本。

command_that_might_fail || true

15. **查找问题**:

使用 `echo`、`printf` 或者 `read` 来输出中间结果,帮助定位问题。

echo "正在执行到这里"

16. **调试环境**:

在测试环境中进行调试,避免在生产环境直接应用可能存在问题的脚本。

标签:shell,函数,使用,echo,set,调试模式,linux,调试
From: https://www.cnblogs.com/yund/p/17644059.html

相关文章

  • Linux驱动开发详解——学习笔记
    Linux设备驱动概述计算机系统的运转需要软件和硬件共同参与,硬件是底层基础,软件则实现了具体的应用。硬件和软件之间则通过设备驱动来联系。在没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口。而在有操作系统的情况下,驱动的架构则由相应的操作系统来定义。驱动存......
  • 开发调试更便捷!火山引擎 DataLeap 提供 Notebook 交互式开发体验
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群Notebook是一种支持REPL模式的开发环境。所谓「REPL」,即「读取-求值-输出」循环:输入一段代码,立刻得到相应的结果,并继续等待下一次输入。Notebook通常使得探索性的开发和调试更加便捷,在Notebo......
  • 开发调试更便捷!火山引擎 DataLeap 提供 Notebook 交互式开发体验
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 Notebook是一种支持REPL模式的开发环境。 所谓「REPL」,即「读取-求值-输出」循环:输入一段代码,立刻得到相应的结果,并继续等待下一次输入。Notebook通常使得探索性的开发和调试更加便......
  • linux环境编程(1): 实现一个单元测试框架-2
    正片开始在之前的文章中,介绍了如何实现一个类似gtest的单元测试框架,完整的项目代码可以参考这里:https://github.com/kfggww/cutest.近期对cutest的实现做了一些修改,包括:TestSuite的声明宏,修改为TEST_SUITE增加TestSuite的声明宏TEST_SUITE_WITH.可传递Suite的......
  • Linux路由功能练习(1)
    打开一台Linux虚拟机VM1,并添加2块网卡,一个使用VMware1网卡,一个使用VMware2网卡配置VMware1网卡的IP地址为192.168.136.254/24;VMware2网卡的IP地址为192.168.137.254/24[root@nb~]#ifconfigens33192.168.136.254netmask255.255.255.0[root@nb~]#ifconfigens37192.168.1......
  • Linux性能优化宝典
    性能优化性能指标高并发和响应快对应着性能优化的两个核心指标:吞吐和延时应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等性能问题的本质就是系统资源已经到达瓶颈,但请求的处理还不够快,无法支撑更多的请求。性能分析实际上就是找出应用或系统的瓶颈,设法......
  • PHP下的webshell免杀
    异或免杀大多数情况下,开发者为了方便自身的需求,会使用"黑名单"的方式扳掉许多敏感函数,来达到一个表面看上去新相对安全的一个目的,但是却不知道因为这种大意的思维会导致整个系统都处于极度危险中;攻击者以往遇见这种情况。完全可以通过加密的方法可以解决大部分的问题(eg:异或加密,ba......
  • shell脚本基础
    基础命令示例#!/bin/bash固定格式echo"inputstr"输出字符串到屏幕read变量名读取键盘输入test$first==$second&&echo"dengyv"||echo"notdeng"判断字符串是否相等echo"filename"$0。脚本名称echo"totalparamnum"$#。参数个数echo......
  • windows系统下从硬盘安装linux-ubuntu
    #windows系统下从硬盘安装linux-ubuntu-1.使用系统自带的分区工具,划10G左右的空间当作安装盘。分区格式为FAT32,取个名字叫A。-2.把下载好的ubuntu镜像打开,复制内容到安装盘A。-3.重启电脑,按F12选择硬盘启动项。这里选ubuntu。 ......
  • Linux网络编程(epoll的ET模式和LT模式)
    (文章目录)前言本篇文章主要来讲解epoll的ET模式和LT模式,epoll中有两种模式可以选择一种是ET模式(边缘触发模式),另一种是LT模式(水平触发模式)一、ET模式和LT模式概念讲解1.水平触发模式(LT,Level-Triggered)在水平触发模式下,当一个文件描述符上的I/O事件就绪时,epoll会立即通知......