bash shell学习日记(2)特殊字符(一)之并号、分号及双分号与句号的用法
bash shell特殊字符(一)
目录
1、并号
1.1 并号的用法
1.2 并号在脚本中呈现
1.3 # 特性总结
2、分号
2.1 分号的用法
2.2 分号在脚本中呈现
2.3 分号用法总结
3、双分号
3.1 双分号与case语句关系
3.2 双分号在脚本中呈现
3.3 双分号用法总结
4、句号
4.1 句号的三种用法
4.2 句号在脚本中呈现
4.3 句号用法总结
5、总结
以思维导出呈现
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bash shell日记(1)写到什么是shell和学习shell的基础环境,对shell简单的认识。正文见如下链接:https://blog.csdn.net/qq_53794425/article/details/125053543?spm=1001.2014.3001.5501,从此开始,我们将通过分析脚本的方式深入学习bash shell相关内容。本章我们将来学习特殊字符,由于特殊字符比较多,我们先从常用的说起。
一、并号
1.1并号的用法
通常境况下 “#” 在bash shell当做注释较多,但也有例外。针对例外的情况我们通过1.2脚本来分析。
1.2 并号在脚本中的呈现
此脚本逻辑:是对 “#” 在脚本中常遇到的情况作分析
1 #!/bin/bash 2 3 # This is a comment. 4 5 echo "A commnet will follow." # 注释在这里 6 # 注意上一条语句中. #号前面要有一个空格 7 8 # A tab precede this comment 9 # 注意上一条语句中,注释是放在本行,行首空白的后面 10 11 # echo中被引号的#. 是不能被当作注释的 12 # echo中被转义的#. 是不能被党组注释的 13 # 反斜线是转义字符 14 15 echo "111-双引号 The # here does not begin a comment." 16 echo '222-单引号 The # here does not begin a comment.' 17 echo 333-无引号有转义 The \# here does not begin a comment. 18 echo 444-无引号无转义 The # here begin a comment 19 20 # 在特定的参数替换结构中,#号不是注释 21 echo ${PATH#*:} #效果:将冒号之前的删除 22 23 # 在数字常量表达式中,# 不是注释 24 echo $((2#101011)) # 数制转换,2进制转换为10进制,这不是注释
脚本执行结果:
A commnet will follow.
111-双引号 The # here does not begin a comment.
222-单引号 The # here does not begin a comment.
333-无引号且有转义 The # here does not begin a comment.
444-无引号无转义 The
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
43
在1行中“#” 作为shell脚本的起始格式使用。3,7两行为常规用途做注释使用,需要注意的是:“#”不能写要执行命令行首,一旦写在行首/本行起始位,本行都被注释掉。
15--24行为重点,是echo后的 # 效果,根据执行结果判断15行、16行中 “#” 不起注释作用 即 echo后的#,如果是单引号、双引号中间的#不是注释 而是直接输出。17行的中 “\" 为转义字符(了解即可,日后会详细说转义字符),bash shell默认转义字符是“ \ " 注意: echo后的#,转义字符后的#不是注释。21行 echo ${PATH#*} 输出效果为:将第一个冒号之前的删除,因此“#”做为特定参数替换的结构。 24行 echo $ ((2#101011)) 输出效果为:数值转换2进制转化为10进制,”#" 作为进制转换使用。
1.3“#”用法总结
常规用法:作注释使用 注意:对于命令来说不能放在 “#” 后,否则将被注释掉。
echo后“#”的 “#”特殊效果:
- 单引号,双引号中间的 “#” 直接输出
- 转义字符后的 “#” 不做注释使用
- 作为特定参数的结构
- 作为进制转换使用
二、分号
2.1 分号的用法
分号在脚本中 作为一个命令分隔符,可以在一行中写两个或两个以上命令。
2.2 分号在bash shell脚本中呈现
脚本逻辑:判断指定的文件mytestfile.txt是否存在,如果存在复制一份新的文件文件名为 mytestfile.txt.bak,如果不存在则创建这个文件。
1 #!/bin/bash 2 3 # 分号(spepartor [semicolon])测试 4 echo hello; echo there 5 6 filename='mytestfile.txt' 7 8 if [ -e "$filename" ]; then # 注意:if和then需要分隔 -e为文件操作符 -e ”文件名/目录“ 检验文件/目录是否存在 9 echo "File $filename exists." ; cp $filename $filename.bak 10 else 11 echo "File $filename not found." ; touch $filename 12 fi; echo "File test complete."
13 exit
特需注意:在第八行中 ,-e为文件操作符 -e ”文件名/目录“ 检验文件/目录是否存在。
2.3 分号用法总结
记住分号在脚本中做命令分隔符的唯一用法即可。
三、双分号
3.1 双分号在bash shell中的用法
终结case选项(case多个if-else逻辑的组合)即case每个条件判断语句都是以双分号做结尾的。
3.2 通过脚本体会双分号在脚本中的用法
脚本逻辑:定义变量 variable,6-9行为case代码端,在顶部对variable值进行判断/测试如果值为abc,echo出对应字段。
1 #!/bin/bash 2 # 双分号 double semicolon 示例 3 4 variable='abc' 5 6 case "$variable" in 7 abc)
8 echo "\$variable = abc";; 9 xyz)
10 echo "\$variable = xyz";; 11 esac 12 13 exit
脚本分析(特殊点):
- 8行,9行中,“\” 转义字符 ,直接打印出$variable = abc或 $variable = xyz
关于case语句:
- case当作一个测试,依靠代码块的顶部或尾部的条件来决定程序的分支
- 在7--8行中 “;;" 作用是告诉脚本解释器,对于case选项就这么多
- case与esac是一对,类似if与fi
3.3分号在bash shell脚本中用法总结
在bash shell脚本中,主要作case语句的每个条件语句结尾来使用。注意:case知识会逐步补充,在此主要关注双分号在代码中的应用即可。
四、句号
4.1 句号的三种用法
- 做命令使用:等价于source命令,在脚本中引用文件,使用:把source/ . 后指定的文件插入到相应的文件中
- 文件名和目录中的一部分。在文件中:放在文件名开头,则这个文件为隐藏文件 。目录中:一个单独的”."表示当前的工作目录,". ." 表示上级目录。
- 正则表示式中作用:匹配任意单个字符。
简单理解正则表达式:由一系列特殊字符组成的字符串,其中每一个特殊字符称为元字符,元字符并不保持本身的含义解释成另一种特殊的意思。
4.2 句号在脚本中呈现
脚本逻辑:通过 "." 命令引用03-04dot.txt文件,输出文件中D1那行内容。
[root@localhost ~]# vim 03-04dot.txt D1=111 D2=222 D3=333
1 #!/bin/bash 2 # 点 命令测试。点命令与source命令效果相同 3 4 . 03-04dot.txt # 加载一个数据文件 5 # 这与 source 03-04dot.txt 效果相同 6 # 03-04dot.txt 必须存在于当前的工作目录 7 8 # 下面,引用数据文件中定义的一个变量 9 echo D1 10 11 exit
脚本分析:在此bash shell脚本中“."主要做
4.3句号在脚本中用法总结
1、做命令使用引用文件
2、在正则表达式中做匹配单个字符使用
3、做为目录和文件名的一部分
五、本章以思维导图的方式呈现如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具