一、Hello Linux
创建shell脚本,命名test,格式统一为.sh
touch hello.sh
编辑脚本:
vim hello.sh
按一下字母i键,即可编辑
编辑好内容后,按一下ESC键,再输入:wq! (表示强制保存退出的意思),回车即可。
二、运行shell脚本
1、直接使用bash 命令运行
bash hello.sh
效果如下:
2、赋予权限直接运行
因为没有执行权限首先进行授权
chmod -x hello.sh
执行hello.sh文件
相对路径:./hello.sh
当前目录:. hello.sh
绝对路径:/root/shell/hello.sh
效果演示
三、Shell变量
1、变量类型
- 普通变量:变量名变量值,注意,=号前后不能有空格
- 删除变量: unset 变量名
- 只读变量:readonly 变量,注意:不能unsete
2、 变量定义规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格“
- 在bash 中,变量默认类型都是字符串类型,无法直接进行数值运算
- 变量的值如果有空格,需要使用双引号或单引号括起来。
3、 普通变量
变量就很简单,比如我我要给变量value赋值为“"你好呀,Linux"
value="你好呀,Linux"
使用打印变量呢?
echo $value
你可以在这里把echo理解为python的print,c语言的printf之类。
现在我们还是新建一个sh来进行测试
touch hello.sh
编辑文件:
vim hello.sh
编辑内容如下:
运行结果如下:
4、只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,举个例子:
不添加readonly的编辑内容
运行结果:
添加readonly的编辑内容
编辑结果:
执行会报错
实际上这样的变量,我们一般也不怎么用,个人认为了解一下就是
5、删除变量
使用unset命令来删除一个已经声明的变量
编辑内容如下:
运行结果:
value实例是没有输出的
6、特殊变量
6.1、$n
- $0:当前脚本的文件名
- $1 ~ $9:第1个到第9个参数
- 10 {N}:第10个到第N个参数
编辑内容:
如果不赋值,结果输出
赋值后,结果输出
6.2、$#
获取所有输入参数个数 ,常用于循环,判断参数个数是否正确
不输入参数,运行结果:
输入参数,运行结果:
6.3、$*,$@
$@表示所有参数的列表,每个参数都是独立的,可以通过{n} 来获取。例如,1表示第1个参数,{2} 表示第2个参数,以此类推1。
$∗表示所有参数的列表,每个参数都是独立的,可以通过{n} 来获取。例如,1表示第1个参数,{2} 表示第2个参数,以此类推。
不加参数运行结果:
添加参数运行结果:
6.4、$?
$?:上一个命令的退出状态,或函数的返回值。
我们使用echo命令打印了一个字符串,然后使用? 来获取上一个命令的退出状态,即 0。因为 echo 命令执行成功了。
四、字符串
1、双引号和单引号特点
单引号特点:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号特点:
- 双引号里可以有变量 - 双引号里可以出现转义字符
2、获取字符串长度
加上echo ${#c}即可:
运行结果:
3、 字符串提取
编辑内容:获取a变量第1到3个字符串
运行结果:
五、运算符
1、算数运算符
运算符有两种格式分别为expr和$[]格式
1.1、 expr格式
运行结果:
1.2、$[]格式
运行结果:
2、关系运算符
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
注:关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
注意格式:[ $a = $b ],和左右字符必须有空格进行间隔
运行结果:
3、逻辑运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
或运算:一个为真即为真,全部为假才是假
与运算:一个为假即为假,全部为真才是真
4. 字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
5、文件测试运算符(重点)
文件测试运算符用于检测 Unix/Linux 文件的各种属性。
注:权限几个判断,如果只有一个部分符合,则认为是有权限的。