使用shell追踪模式

shell追踪模式,就是追踪shell脚本的命令执行情况。使用 -x 来切换到追踪模式。
我们使用sys_info.sh脚本来模拟这个操作,他简要打印系统日期,时间,用户登陆数,上线时间等,当然包括部分错误哦。

#!/bin/bash
#script to print brief system info

ROOT_ID="0"

DATE=`date`
NO_USERS=`who | wc -l`
UPTIME=`uptime`

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;    
}

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME
}

check_root
print_sys_info

exit 0

现在保存后,调试运行这个脚本

$ chmod +x sys_info.sh
$ bash -x sys_info.sh

在这里插入图片描述

在这里,我们可以看到,一些命令输出赋值给变量,如date赋值给DATE.\

我们也可以不执行脚本命令,来检查语法错误。

$  bash -n sys_info.sh 

然后直接显示下面错误
在这里插入图片描述

原因是少了if 的结束符

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
   fi    
}

继续运行检查

$  bash -n sys_info.sh

又显示错误
在这里插入图片描述
检查发现,输出echo 缺少一个“

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME ”
}

修改并保存后,重新检查 bash -n 没有发现错误。
执行 $ sudo bash -x sys_info.sh
最终显示如下:
在这里插入图片描述

这就是非常有用的shell追踪 ,你可以多试试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值