文章目录
一、概述
1、介绍
-
shell 是一种脚本语言
-
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
-
shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)
-
shell命令解析器:
-
系统提供 shell命令解析器:
sh ash bash
-
查看自己linux系统的默认解析:
echo $SHELL
2、Shell在计算机中的地位
- shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行
- Shell处于用户和内核之间。
二、简单的开始
1、hello world
(1)创建shell脚本
touch hello.sh
(2)写入命令
#!/bin/bash
echo "hello world!"
(3)执行
- 保存后执行,图中分为绝对路径和相对路径执行,sh bash一样功能,只不过sh指向bash,是个软连接,最后也是调用bash;直接在根目录下执行需要赋予脚本权限
2、多命令行处理
- 直接把echo内容写入到demo.txt中
#!/bin/bash
touch demo.txt
echo "I like drinking Coke" >> demo.txt
三、Shell中的变量
1、系统以及自定义变量
- 常用系统变量:
HOME、PWD、SHELL、USER
等,方便在文件写入操作。
(1)基本语法
-
定义变量:变量=值
-
撤销变量:unset 变量
-
声明静态变量:readonly变量,注意:不能unset
(2)变量定义规则
-
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
-
等号两侧不能有空格
-
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
-
变量的值如果有空格,需要使用双引号或单引号括起来。
-
可把变量提升为全局环境变量,可供其他Shell程序使用:export 变量名
sxh@learn-basis:shell$ A=4 //定义变量A
sxh@learn-basis:shell$ echo $A
4
sxh@learn-basis:shell$ A=9 //给变量A重新赋值
sxh@learn-basis:shell$ echo $A
9
sxh@learn-basis:shell$ unset A //撤销变量A
sxh@learn-basis:shell$ echo $A
sxh@learn-basis:shell$ readonly B=2 //声明静态的变量B=2,不能unset
sxh@learn-basis:shell$ echo $B
2
sxh@learn-basis:shell$ unset B
bash: unset: B:无法取消设定: 只读 variable
sxh@learn-basis:shell$ C=1+2 //在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
sxh@learn-basis:shell$ echo $C
1+2
sxh@learn-basis:shell$ D=I love you //变量的值如果有空格,需要使用双引号或单引号括起来
/*error
Command 'love' not found, but can be installed with:
sudo snap install love # version 11.2+pkg-d332, or
sudo apt install love # version 11.3-1
See 'snap info love' for additional versions.
*/
sxh@learn-basis:shell$ D="I love you"
sxh@learn-basis:shell$ echo $D
I love you
sxh@learn-basis:shell$ vi hello.sh
写入#!/bin/bash
echo "hello sxh"
echo $C
sxh@learn-basis:shell$ ./hello.sh
hello sxh
//发现并没有打印输出变量C的值。
sxh@learn-basis:shell$ export C //把变量提升为全局环境变量,可供其他Shell程序使用
sxh@learn-basis:shell$ ./hello.sh
hello sxh
1+2 //success
2、特殊变量
四、运算符
(1)“((运算式)) ”或“ ((运算式))”或“((运算式))”或“[运算式]”
(2)expr + , - , *, /, % 加,减,乘,除,取余
注意:expr运算符间要有空格