shell编程基础(shell脚本学习笔记)
文章目录
特殊字符
Shell中除了普通字符外,还有很多具有特殊含义和功能的字符,在使用它们时要特别注意其含义和作用。
1.通配符
通配符用于模式匹配,常见的通配符有*、?和用[]括起来的字符序列。
*代表任意长度的字符串,但是不包括点号和斜线号;
?可用于匹配任一单个字符;
[]代表匹配其中的任意一个字符。
**注意:[]中可以用-表明起止,比如[a-c]等同于[abc],但是要注意-字符在[]外只是一个普通字符,没有任何特殊作用;和?在[]中则变成了普通字符,没有通配的功效。
2.引号
引号包括单引号和双引号:
单引号又叫称“全引用”或“强引用”,单引号又叫称“全引用”或“强引用”。
双引号又称“部分引用”或“弱引用”,所有用双引号括起来的字符除了美元符($)、反斜线(\)、反引号(`)依然保留其特殊用途外,其余字符都作为普通字符处理。
有一点注意是单引号中间不能再出现单引号,否则会Shell无法判断到底哪里是单引号的起止位置。
3.注释符
Shell使用==#作为注释符==。为了增强代码的可阅读性以及有利于后期管理,要养成多写注释的习惯。所有以#开头的部分Shell解释器都会略过。
但是要注意,如果出现#后连着!,也就是“#!”不会被理解成注释,因此,其后跟着的部分必须是某个解释器的路径,而且“#!”必须出现在整个脚本的第一行。
4.大括号
(1)变量扩展
大括号{}在Shell中的用法很多,最常见的用法就是引用变量原型,又叫变量扩展。
(2)通配符扩展
**用于匹配多个排列组合的可能。**比如坐标,横坐标是x1、x2、x3,纵坐标是y1、y2、y3,那么所有可能的坐标就是{x1,x2,x3}{y1,y2,y3}。
[root@localhost ~]# echo {x1,x2,x3}{y1,y2,y3}
x1y1 x1y2 x1y3 x2y1 x2y2 x2y3 x3y1 x3y2 x3y3
**还可以用于匹配不同的文件,文件名的特征是只有其中一部分不同。**比如file_A、file_B,就可以用file_{A,B}来匹配。
[root@localhost ~]# touch file_{A,B}
[root@localhost ~]# ls file_{A,B}
file_A file_B
(3)语句块
大括号还能用于构造语句块,语句之间使用回车隔开。使用语句块的场景一般是在自定义函数中。
5.控制字符
控制字符即Ctrl+KEY组合键一起使用,用于修改终端或文本显示。但是控制字符在脚本中不能使用,也就是说控制字符是交互式使用的。
6.杂项
(1)反引号
用于命令替换,和$()的作用相同,表示返回当前命令的执行结果并赋值给变量。
(2)位置参数
位置参数的含义如下。
$0:脚本名本身。
$1、$2……${10}:脚本的第一个参数、第二个参数……第十个参数。
$#:变量总数。
$*、$@:显示所有参数。
$?:前一个命令的退出的返回值。
$!:最后一个后台进程的ID号。
(3)感叹号
通常代表逻辑反,例如!=代表不等于。也可以用于执行history中某个命令,比如使用history查看到第100个命令是ifconfig,则可以用!100代表执行ifconfig。