一、概述
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
Shell 既是一种命令语言,又是一种程序设计语言 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
二、使用
1、使用vim创建并编辑一个新的.sh后缀的文件
2、echo表示输出,输出的语句默认string语句,无论加不加双引号或者单引号。
3、保存并退出,使用sh 文件名.sh 运行文件。
运行:
1.通过sh命令执行
例如:sh helloworld.sh
2.通过bash命令执行
例如:bash helloworld.sh
3.通过chmod命令把文件修改为可执行的文件然后通过./文件命令.sh来执行
例如:./helloworld.sh(必须在当前目录下)
三、变量
1、定义和初始化
格式
变量名称=值
例如:
x=10 "abc edefg"
注意:
等号两边不能有空格
2、使用:通过$区分变量还是一句话
格式1:
$变量
格式2:
${变量}
注意:
格式1,会把$后所有相连内容看做一个变量
格式2,${}表示值引用{}之中的内容分,对相连的内容做了一个区分
四、$0...$n
表示接收外部参数(执行脚本时,传递的参数)
格式:
$下标
注意:
$0永远表示脚本名称(所以脚本名称不算数,$0也不算第一个参数)
下标大于一位数只能使用${}获取参数,因为$下标只把第一位数据看做下标
$*获取所有参数
$#获取所有参数个数
五、引号
单引号:默认里面的全部内容都是字符窜,不能引用变量
双引号:可以引用变量($变量),拥有特殊含义的内容,且可以使用关键字
注意:
如果有多个引号,连续的形成一对,有单个双引号,会报错,如果想在双引号中输出双引号加上“\”转义字符
引号中使用其他引号,其他引号做字符串使用,使用相同引号输出是会默认不存在。
六、字符串命令,字符窜本身不会备改变
1、获取长度
格式:
${#变量}
2、截取:
格式:
${变量:开始位置:长度}
注意:
${str::5}:从0获取5个
${str:0}:从0获取到末尾
3、替换单个
格式:
${变量/旧/新}
注意:从左向右替换第一个
4、替换所有
格式:
${变量//旧/新}
注意:替换不会再原字符上进行修改,想要修改原字符串只能重新赋值
5、 删除
从头开始删除
${变量#表达式}:从头开始连续依次的匹配,一但匹配成功,第一次就开始删除
${变量##表达式}:从头开始连续依次的匹配,一但匹配成功,最后一次才开始删除
从尾开始删除
${变量%表达式}:匹配第一个删除
${变量%%表达式}:匹配最后一个删除
注意:从未开始删除,表达式还是从左向右去写
删除不会再原字符上进行修改,想要修改原字符串只能从新赋值
七、运算符
1、算术运算符
bash不支持简单的数学运算,可以通过命令实现expr
格式1:
`expr 值 + 值`
注意:符号两边需要加上空格
格式2:不需要关心空格和有没有引号的问题,可以自动识别变量。
$[值+值] $[变量1+变量2]
2、比较运算符: > < >= <=....
格式:
$[值1 符号 值2](符号两边空格加不加无所谓)
注意:比较的结果用1(true)和0(false)表示
1. -eq (equal的缩写),表示等于为真
2. -ne (not equal的缩写),表示不等于为真
3. -gt (greater than的缩写),表示大于为真
4. -ge (greater&equal的缩写),表示大于等于为真
5.-lt (lower than的缩写),表示小于为真
6. -le (lower&equal的缩写),表示小于等于为真
3、逻辑运算符: &/and |/or !/not
例如:
#判断2>1结果
echo $[2 > 1]
#反转2>1结果
echo $[!$[2>1]]
# 反转后面的结果2>1 and 2>3 false0
echo $[!$[$[2>1]&$[2>3]]]
echo $[2>1 & 2<1]