Shell脚本编程基础第三天之--脚本调试、写文件

141 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

一、脚本调试的方式

1.命令行开启

# 调试模式运行,逐行执行“命令”并打印“命令“接受的输入参数值
$bash -x <script.sh>

image.png

image.png

image.png

可以发现,调试命令直接输出了脚本,脚本里面的原代码都带上了+号,其中脚本里面ls是列出当前目录下所有文件,在调试的时候也全部列出了

2.脚本里面开启

# 代码片段临时开启调试模式

set -x # activate debugging from here
w
set +x # stop debugging from here

image.png
注意-x是开启,+x是关闭

image.png
注意这种调试,命令行调用的时候不用 +x,直接 bash 4-1.sh就够了

直接作对比,脚本开启调试的时候 echo "${FILELIST}"这句脚本在调试命令之外,所以会发现,右图(脚本开启)比左图(命令行开启)少输出了一个ls命令

二、写文件

  1. # 写文件 echo -e " $msg" >> debug. log

可以直接在命令行使用,在这里可以将>>理解为输入吧,而后面的debug.log文件则会默认创建

image.png

要注意这里msg变量其实是没有内容的,但是echo会将默认的换行符输入到文件里面

可以用hexdump命令查看
hexdump主要用来查看“二进制”文件的十六进制编码。注意:它能够查看任何文件,不限于与二进制文件。详情请咨询搜索,我也是第一次接触这个命令

image.png

# 如果打印变量内容包含“不可打印字符”
# msg="hello world\x01\x02" \

先定义
image.png

注意:\x开头是十六进制 可以去ASCII码表查看对应字符, 使用man ascii命令即可查看 image.png

直接使用echo -n -e "$msg"命令,-n代表不输出换行符

image.png

echo -n -e "$msg"| xxd -p

xxd的作用就是将一个文件以十六进制的形式显示出来。它还可以将十六进制转储转换回其原始二进制形式。所以下面输出的是hello world的十六进制形式,还有-p的区别

image.png

也可以直接写到脚本里面

echo -n -e "$msg"| xxd -p >> debug.log

cat查看

image.png

Shell脚本编程基础第四天之--给脚本传参