脚本调试和函数
来源:互联网 发布:手机辅助软件 编辑:程序博客网 时间:2024/05/21 07:55
1.脚本调试
调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本运行信息。调试信息可以帮你弄清除是什么原因使得程序发生崩溃或行为异常。
-x标识将脚本中执行过的每一行都输出到stdout。不过,我们也可能只关注脚本某些部分的命令及参数的打印输出。针对这种情况,可以在脚本中使用set builtin来启用或禁止调试打印。
set -x:在执行时显示参数和命令set +x:禁止调试set -v:当命令进行读取时显示输入set +v:禁止打印输出
1)利用选项-x,启用shell脚本的跟踪调试功能
bash -x script.sh
2)使用set -x和set +x对脚本进行部分调试
for i in {1..6};do set -x echo $i set +xdoneecho "Script executed"[lirong@lr ~/work_lr/mygit/shell]# sh script.sh + echo 11+ set +x+ echo 22+ set +x+ echo 33+ set +x+ echo 44+ set +x+ echo 55+ set +x+ echo 66+ set +xScript executed
3)自定义格式显示调试信息
function DEBUG(){ [ "$_DEBUG" == "on" ] && $@ || :}for i in {1..10}do DEBUG echo $idone
我们在每一个需要打印调试信息的语句前加上DEBUG。如果没有把_DEBUG=on传递给脚本,那么调试信息就不会打印出来。在Bash中,命令”:”告诉shell不要进行任何操作。
[lirong@lr ~/work_lr/mygit/shell]# _DEBUG=on sh debug.sh 1 2 3 4 5 6 7 8 9 10[lirong@lr ~/work_lr/mygit/shell]# sh debug.sh [lirong@lr ~/work_lr/mygit/shell]#
2.函数和参数
1)定义函数
function fname(){}或者:fname(){}
2)只需要使用函数名就可以调用某个函数
fname; #执行函数
3)参数可以传递给函数,并由脚本进行访问
fname arg1 arg2; #传递参数
以下是函数fname的定义。在函数fname中,包含各种访问函数参数的方法。
fname(){ echo $1,$2; #访问参数1和参数2 echo "$@"; #以列表的方式一次性打印所有参数 echo "$*"; #类似于$@,但是参数被作为单个实体 return 0; #返回值}
类似地,参数可以传递给脚本并通过script:$0访问
$1 是第一个参数。$2 是第二个参数。$n 是第n个参数。"$@" 被扩展成 "$1" "$2" "$3" 等。"$*" 被扩展成 "$1c$2c$3" ,其中 c 是IFS的第一个字符。"$@" 要比 "$*" 用得多。由于 "$*" 将所有的参数当做单个字符串,因此它很少被使用。
4)导出函数
函数也能像环境变量一样用export导出,函数的作用域就可以扩展到子进程中
export -f fname
5)向命令传递参数
命令的参数能够以不同的格式进行传递。假设-p、-v是可用选项,-k N 是另一个可以接受数字的选项,同时该命令还接受一个文件名作为参数,那么,它有以下几种执行方式
$ command -p -v -k 1 file$ command -pv -k 1 file$ command -vpk 1 file$ command file -pvk 1
2017-11-28-LR Linux shell攻略脚本
阅读全文
0 0
- 脚本调试和函数
- 如何运行和调试 JavaScript 脚本
- 性能测试脚本的编写和调试
- 【linux脚本】函数和参数
- Shell函数和脚本参数
- 脚本调试
- 脚本调试
- 脚本调试
- Shell脚本函数定义和函数参数
- shell函数和调试命令
- 【linux脚本】脚本调试
- Winrunner中的脚本和函数调用
- 中止脚本执行函数:exit()和die()
- 动作脚本类和全局函数
- 同一脚本中的函数和调用
- PHP的MySQL连接脚本和函数
- matlab中脚本文件和函数文件
- QTP函数,函数库和VBScript脚本_files
- 虚拟机
- sizeof 与 strlen
- php 二分查找(折半查找) 顺序查找
- 1-2 Welcome to You!
- 【莫比乌斯反演】BZOJ1101 [POI2007]Zap
- 脚本调试和函数
- UVa12716GCD XOR
- tomcat 重启后图片等文件消失解决方案虚拟路径映射
- Eclipse实现代码反编译
- c++中字符串的基本操作函数
- Redis数据持久化
- 1-3 Programming in C is fun!
- python去utf文件的BOM头部
- JVM内存区域