对Linux脚本进行debug日志输出,在开发脚本的时候是非常有用的,这里我介绍两种进行debug输出的办法。
Debug选项
学习linux,debug脚本可以说是必备技能。在练习之前,我们先准备一个脚本,下面是我写的一个简单脚本:
ubuntu@VM-0-17-ubuntu:~$ tee demo.sh
a=1
a=1
b=2
b=2
c=s
c=s
expr a + b + c
expr a + b + c
echo $c
echo $c
^C
最后的^C不是文件内容,是我按Ctrl+C退出时控制台的输出,而上面的重复,也是我每输入一行,控制台就反显一行,并不是输入了两行同样的内容。为此,可以检查下脚本内容:
ubuntu@VM-0-17-ubuntu:~$ cat demo.sh
a=1
b=2
c=s
expr a + b + c
echo $c
Debug脚本,不过是一个简单的-x选项,可以看到脚本运行时的每一行而已。现在我给脚本加上权限执行:
ubuntu@VM-0-17-ubuntu:~$ chmod +x demo.sh
ubuntu@VM-0-17-ubuntu:~$ bash -x demo.sh
+ a=1
+ b=2
+ c=s
+ expr a + b + c
expr: non-integer argument
+ echo s
s
ubuntu@VM-0-17-ubuntu:~$ ./demo.sh
expr: non-integer argument
s
区别在于,debug输出更加详细,更容易定位错误所在行。
Set命令
除了bash的-x选项外,直接使用使用set -x也能debug,但是效果并不好,下面是个例子:
ubuntu@VM-0-17-ubuntu:~$ set -x
+ set -x
++ history -a
ubuntu@VM-0-17-ubuntu:~$ ./demo.sh
+ ./demo.sh
expr: non-integer argument
s
++ history -a
ubuntu@VM-0-17-ubuntu:~$ set +x
+ set +x
ubuntu@VM-0-17-ubuntu:~$ ./demo.sh
expr: non-integer argument
s
&esmp; 但是在脚本里使用的话效果就不一样了,以下是我修改后的脚本:
set -x
a=1
b=2
c=s
expr a + b + c
echo $c
set +x
我在脚本开头set -x开启debug,在脚本尾部加上set +x关闭debug,执行效果如下:
ubuntu@VM-0-17-ubuntu:~$ ./demo.sh
++ a=1
++ b=2
++ c=s
++ expr a + b + c
expr: non-integer argument
++ echo s
s
++ set +x
版权声明:本文为m0_66201040原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。