shell的定义:shell 是位于操作系统和应用程序之间,是他们二者最主要的接口,shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。
一句话,shell就是在操作系统和应用程序之间的一个命令翻译工具。
基本上shell分为两类:
- 图形界面shell:
即我们常说的桌面 - 命令行式shell
Windows系统:cmd.exe 命令提示符
linux系统: sh / csh / ksh / bash / …
我们常说的shell是命令行式的shell,在工作中常用的是linux系统下的bash。
查看当前环境支持的shell:
[root@linux-node1 ~]# cat /etc/shells
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
shell脚本:当可执行的Linux命令或语句不在命令行状态下执行,而是通过一个文件执行时,我们称文件为shell脚本。
脚本文件首行是而且必须是脚本解释器:
#!/bin/bash
shell中的变量:
本地变量:( 普通变量、命令变量)在当前系统的某个环境下才能生效的变量,作用范围小。
普通变量:
变量名 = “变量值”
看见啥就赋值啥
命令变量:
变量名 = $(命令)
是将命令执行的结果赋值给变量
全局变量:在当前系统的所有环境下都能生效的变量。
可以通过命令查看环境变量
env
定义全局变量:
export 变量=值
查看变量:
"${变量名}"
取消变量:
unset 变量名
测试语句
Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0,表示成功,值为其他时,表示失败。使用专门的测试工具—test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立)
测试语句形式:[ 条件表达式 ]
逻辑表达式:一般用于判断多个条件之间的依赖关系
常见的逻辑表达式有: && 和 ||
命令1 && 命令2
如果命令1执行成功,那么我才执行命令2 – 夫唱妇随
如果命令1执行失败,那么命令2也不执行
命令1 || 命令2
如果命令1执行成功,那么命令2不执行 – 对着干
如果命令1执行失败,那么命令2执行
文件表达式
-f 判断输入内容是否是一个文件
-d 判断输入内容是否是一个目录
-x 判断输入内容是否可执行
示例:
[ -x age.sh ] || echo "文件没有执行权限"
文件没有执行权限
[ -x test.sh ] && echo "文件有执行权限"
文件有执行权限
数值操作符
n1 -eq n2 相等
n1 -gt n2 大于
n1 -lt n2 小于
n1 -ne n2 不等于
字符串比较
str1 == str2 str1和str2字符串内容一致
str1 != str2 str1和str2字符串内容不一致,!表示相反的意思