shell是一种解释性语言,是用来解释执行用户的命令,不需要编译
有两种解释方式:
(1)交互式:用户输入一条命令,shell就解释一行
(2)批处理:用户事先写一个shell脚本,有很多条命令,shell一次执行完
- 编写一个shell脚本需要具备以下条件:
1、要有一个以.sh结尾的文件
2、添加可执行权限 chmod u+x test.sh
3、shell脚本的第一行 #!/bin/bash,指明解释器
4、shell基本上一行写一条指令,要写多行需要添加
- shell编写有一些基本的语法:
1、变量赋值时,等号两边不允许有空格;
看其是否时空格,添加空格
2、提取变量值时,加$
3、shell不需要明确定义类型,它把所有的变量都当做字符串
4、shell变量不需要先定义后使用,但如果对一个没有定义的变量取值,则该变量相当于空
5、用${value} 可以取value变量的值,但是一般情况下不加{}
为完成字符串的拼接功能而不引起混淆,需要给变量添加{}
- 其他执行方式:
shell在运行时除了添加可执行权限外
/bin/bash test.sh
bash test.sh
bash ./test.sh
这三种方式也可以执行shell
shell变量:shell变量由全大写字母和下划线组成
1. 环境变量:环境变量可以从父进程传递给子进程,printenv可以显示当前的环境变量
2. 本地变量:本地变量只存在于当前shell进程
shell的特殊符号:
(1)通配符
*:匹配0个或任意多个字符
?:匹配任意一个字符
[]:匹配方括号内任意一个字符的一次出现
(2)转义字符:用于去除紧跟其后的单个字符的特殊含义
(3)命令代换:将命令执行,然后将结果替换到命令所在地
反引号(`):命令代换
$(()):算数代换
用于算数运算,$(())中的变量取值将转换成整数
只能用于 + - * / 和()运算
(4)单引号和双引号都用于保持字符的字面值,但双引号内 ` 和$仍取其特殊含义