02 Shell Script注释和debug

Shell Script注释和debug

一、ShellScript注释

​ # 代表不解释不执行

​ 语法:#

sh 复制代码
# 创建myshell.sh文件
[root@localhost ~]# vi myshell.sh  


# 写入内容
#!/bin/bash

# 打印hello world(正确)
echo "hello world"
echo "hello 2" # 注释2(正确)
echo "hello 3"# 注释3(错误,代码和注释需要空格隔开)


# 查看打印结果
[root@localhost ~]# bash myshell.sh 
hello world
hello 2
hello 3# 注释3

二、ShellScript Debug

sh 复制代码
# 创建myshell.sh文件
[root@localhost ~]# vi myshell.sh  


# 写入内容
#!/bin/bash

# 打印hello world
echo "hello world

​ #bash [-nvx] scripts.sh

​ 选项与参数:

​ -n :不要运行script,仅查询语法的问题;

sh 复制代码
[root@localhost ~]# bash -n myshell.sh
myshell.sh: line 4: unexpected EOF while looking for matching `"'
myshell.sh: line 5: syntax error: unexpected end of file

​ -v :再运行sccript前,先将整个scripts 的内容输出到屏幕上;

sh 复制代码
[root@localhost ~]# bash -v myshell.sh
#!/bin/bash

# 打印hello world
echo "hello world
myshell.sh: line 4: unexpected EOF while looking for matching `"'
myshell.sh: line 5: syntax error: unexpected end of file

​ -x :将执行到的script内容显示到屏幕上,这是很有用的参数!

sh 复制代码
[root@localhost ~]# bash -x myshell.sh
myshell.sh: line 4: unexpected EOF while looking for matching `"'
myshell.sh: line 5: syntax error: unexpected end of file

三、Shell 扩展

​ 使用选项-vx做进一步测试

创建一个脚本文件test.sh

sh 复制代码
# 创建sh文件
[root@localhost ~]# vi myshell.sh 


# 写入内容
#!/bin/bash
mkdir ./{a,b,c}1
echo "ok"


# 查看内容(和实际内容不同)
[root@localhost ~]# bash -x myshell.sh
+ mkdir ./a1 ./b1 ./c1
+ echo ok
ok

​ #bash -vx test.sh

​ -v选项使得脚本中的命令显示出来

​ -x选项显示shell对脚本命令的解释结果,即shell解释器扩展命令字符串的结果

​ 扩展知识:

​ shell扩展:花括号扩展

​ 不能出现在引用中

​ 花括号前后的前缀是可选的

​ 最少出现一个逗号

sh 复制代码
mkdir ./{a,b,c}1

​ shell扩展:变量参数扩展

​ 符号$对使用的bash而言是获取参数变量值的特殊标识

​ 完整写法:${parameter}

sh 复制代码
echo $PATH

​ 通过使用tree命令显示当前目录的属性结构

​ *通过yum install tree -y来安装该命令

sh 复制代码
# 下载tree软件包
[root@localhost ~]# yum -y install tree

# 查看当前目录结构
[root@localhost ~]# tree
.
├── a1
├── b1
├── c1
└── myshell.sh
相关推荐
骥龙1 小时前
5.14、AI安全运维体系:构建企业级的“安全超脑”
运维·人工智能·安全
源梦想1 小时前
机甲恐龙动作冒险网页小游戏Linux部署教程
linux·运维·服务器
该用户已不存在1 小时前
Let’s Encrypt 证书有效期将缩至 45 天,运维天都塌了
运维·https·自动化运维
yiyeguzhou1001 小时前
论文解读:Overcoming the IOTLB wall for multi-100-Gbps Linux-based networking
linux·运维·服务器
妄想出头的工业炼药师1 小时前
cuda如何安装卸载
linux·运维·服务器
泡沫·1 小时前
3.sed 使用手册
运维
WangLanguager2 小时前
SVD介绍和代码示例
运维
柳鲲鹏2 小时前
LINUX下载编译libcamera
linux·运维·服务器
泡沫·2 小时前
2.grep使用手册
运维
天命码喽c2 小时前
Docker-compose部署GraphRAG-2.7.0
运维·docker·容器