Linux脚本攻略学习笔记之调试脚本和函数、参数


试功能是每一种编程语言都应该实现的重要特性之一。

一、调试脚本

1.1、使用选项-x

启用shell脚本的跟踪调试功能。
bash -x script.sh
运行-x标志的脚本可以打印出所执行的每一行命令以及当前状态。
注意你也可以使用sh -x script.sh

在这里插入图片描述

1.2、 使用 set -x 和set +x

对脚本进行部分调试。例如:
-x 和 +x 对调试区域进行了限制

#!/bin/bash
#文件名:debug.sh
 for i in {1..6};
set -x 
echo $i
set +x
done 
echo "Script executed"

在这里插入图片描述

1.3 自定义调试信息格式

通过 _DEBUG 环境变量来设置调试风格

#!/bin/bash
function DEBUG(){
    [ "_DEBUG" =="on" ] && $@ || :
}
for i in {1..10}
 do 
        DEBUG echo $i
done

执行语句前加上_DEBUG=on 就会把调试信息打印出来
在这里插入图片描述

不传入_DEBUG=on 执行脚本,不会有任何输出 ,脚本中命令":" 告诉shell 不要进行任何操作。

在这里插入图片描述

1.4、 命令详解

set -x :在执行时显示参数和命令
set +x :禁止调试
set -v : 当前命令进行读取时 显示输入
set +v : 禁止打印输入

二、函数和参数

在上脚本调试中,我们已经用到了自定义函数。

2.1、定义函数

  function  fname(){
        statements;
}

或者

fname(){
statements;
}

2.2、函数调用

只需要使用函数名就可以调用某个函数。

2. 3、参数传递

参数可以传递给函数, 并由脚本进行访问,并由脚本进行访问

 fname   arg1 arg2 ;#传递参数
  
  fname(){
  echo $1, $2; #访问参数1和参数2
  echo "$@";#以列表的方式一次性访问所有参数
  echo "$*";#类似于$@,但是参数被作为单个实体
  return 0;#返回值
  }

在这里插入图片描述

$1 是第一个参数
$2 是第二个参数
n 是 第 n 个 参 数 " n 是第n个参数 " nn"@"被扩展成 “$1” “$2” “ 3 " " 3" " 3""*” 被扩展成 “$1c$2c$3”

2.4、导出函数

函数也能像环境变量一样 用export 导出,如此一来,函数的作用域就额可以扩展到子进程中。
语法 :export -f fname

2.5、读取命令返回值(状态)

cmd;
echo $?;
$?会给出命令cmd 的返回值

返回值称为退出状态,可以用于分析命令执行成功与否。 退出状态为0表示成功退出,否则为非0;
脚本如下

#!/bin/bash
#文件名:sucess_test.sh
CMD="command"
$CMD 
if  [ $? -eq 0 ];
then 
 echo  "$CMD executed successfully"
else
 echo "$CMD terminated unsuccessfully"
fi

在这里插入图片描述

2.6、向命令传递参数

命令的参数能够以不同的格式进行传递。假设-p,-v 是可用选项。 -k N 是另一个可以接受的数字选项。
command -p -v -k 1 file
command -pv -k 1 file
command -vpk 1 file
command file -pvk 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值