shell脚本调试方法

除了经常用的echo $var_debug方法外。
还要了解下述调试方法。

shell脚本的三种调试方法

-n 读一遍脚本中的命令但不执行,用来检查脚本中的语法错误
-v 一边执行脚本,一边将执行过的脚本命令打印到标准输出端
-x 提供跟踪执行信息,将执行的每一条命令和结果一次打印出来
有助于检查错误。
使用这些选项有三种方法
1.在命令行提供参数:$sh -x script.sh
2.脚本开头提供参数:#!/bin/sh -x
3.在脚本中用set命令启用or禁用参数:其中set -x表启用,set +x表禁用


shell 注意事项

另:在写脚本的时候,需特别注意添加空格或换行或分号
eg text命令: $[ 5 -lt 10 ]左方括号后须有空格,右方括号前也须有空格
shell脚本中函数定义: foo() {后须有空格或换行
shell脚本中,若同一行内写有两条命令须加分号
与C语言不同的是,shell脚本中,返回值0表真,1表假。


source和./执行shell脚本的区别

1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本没有区别。./filename是因为当前目录没有在PATH中,”.”是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

关于子shell与父shell的问题,举例说明:
(cd..;lsl)shell cd .. ; ls -l
在当前shell下执行,命令执行结束回到其父目录下。

特别是多个脚本,使用环境变量作为交互的时候。最好用source,而且脚本里不要#!/usr/bin/bash之类的;因为这样执行脚本后的环境变量还在当前shell终端里。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值