欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一个shell脚本+执行+调试

程序员文章站 2022-07-12 12:11:15
...

打开vs code编辑器,新建一个文件test_shell.sh,输入如下代码:

#!/bin/bash
echo "Hello World !"

执行方法1:

chmod +x ./test_shell.sh  #使脚本具有执行权限
./test_shell.sh  #执行脚本

第一个shell脚本+执行+调试

执行方法2:

/bin/sh test.sh

第一个shell脚本+执行+调试

更多参考:http://www.runoob.com/linux/linux-shell.html


调试

语法检查

-n选项只做语法检查,而不执行脚本。

sh -n script_name.sh

启动调试

sh -x script_name.sh

进入调试模式后,Shell依次执行读入的语句,产生的输出中有的带加号,有的不带,如下。带加号表示该条语句是Shell执行的。不带加号表示该语句是Shell产生的输出。

第一个shell脚本+执行+调试

中断调试

在调试过程中可以按Ctrl + Z中断调试,观察结果,然后再按fg键继续调试即可。

调试代码模块

上面的-x选项是调试整个脚本的,如果脚本很大,会很不方便,还有一种方法是调试某一块代码的,如下:

set -x
...
code block
...
set +x

这样,只对set -x与set +x之间的代码进行跟踪。

调试函数

set -x

Function call

set +x

常见错误诊断

xxx.sh: cannot shift

这种错误一般是参数传递有误,比如没有给参数,或者参数个数少了。因为shell脚本使用shift来获取下一个参数,如果个数不对,shift命令就会失败。

xxx.sh: ^M: not found

^M是Windows上的回车符\r在UNIX上的显示形式。这种情况多半是在Windows上编辑了shell脚本,然后拿到UNIX/Linux上执行。只要将文件中所有的\r删除即可。

tr -d "\r" <oldfile.sh > newfile.sh

或者一个更标准的方法,因为\r的ASCII码是\015,所以可以这样。

tr -d "\015" < oldfile.sh > newfile.sh

转载:
https://blog.csdn.net/li_adou/article/details/78399748