• 一、调试脚本
  • 1.1、使用选项-x
  • 1.2、 使用 set -x 和set +x
  • 1.3 自定义调试信息格式
  • 1.4、 命令详解
  • 二、函数和参数
  • 2.1、定义函数
  • 2.2、函数调用
  • 2. 3、参数传递
  • 2.4、导出函数
  • 2.5、读取命令返回值(状态)
  • 2.6、向命令传递参数


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

一、调试脚本

1.1、使用选项-x

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

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

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"

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

1.3 自定义调试信息格式

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

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

执行语句前加上_DEBUG=on 就会把调试信息打印出来

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

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

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

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;#返回值
  }

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

$1 是第一个参数
$2 是第二个参数
@"被扩展成 “$1” “$2” “” 被扩展成 “$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

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

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