持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
啥是shell脚本
shell 是一种脚本语言
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)
shell命令解析器: 系统提供 shell命令解析器: sh ash bash
查看自己linux系统的默认解析:echo $SHELL
shell脚本就是linux脚本卸载文件中。以!# /bin/bash 开头,里面都是linux命令组成,文件名一般以.sh为后缀,最简单的shell脚本如下, ./hello.sh
#! /bin/bash
echo "my host is `hostname`"
echo "time is `date +"%F %T"`"
首先文件权限要有可执行文件。
chmod +x hello.sh
执行命令一般在 /usr/bin下面,echo $path可以看到,所有如果文件不在此目录中,命令行直接输入hello.sh会提示找不到,要输入绝对路径或者相对路径才可以
异常排查
有如下一段,看着还行,感觉没啥问题。但是执行时提示一个错误
#! /bin/bash
echo line1
cat > text.txt <<EOF
aaa
bbb
ccc
EOF
echo line2
这个错误使用cat查看文件并不能查看到什么问题,因为EOF后面有个空格,但是肉眼不可见,可以给cat 命令加-A参数,就是显示全部的意思,空格就一览无遗了
那么使用vim怎么查看呢,使用vim也是有方法的,在命令模式下,输入set list就可以看到全部内容了
bash -n shell.sh,只关注语法错误,忽略打印的信息
bash -x shell.sh 可以查看每一行的执行结果,更方便的查找出一些逻辑错误
总结: 语法错误:会导致后续的命令不再继续执行,可以用bash -n 检查错误 命令错误:后续的命令还会继续执行,bash -n 无法检查出来,可以用 bash -x 命令检查出来 逻辑错误:只能使用 bash -x 进行观察,或者冷静思考,否则无法查出错误点。