认识Shell
什么是Shell
Shell是用户与linux内核之间的解释器,解释器负责将用户的指令翻译为内核可以识别的指令。

常用的Shell解释器有(查看本机有哪些解释器:cat /etc/shells):
- /bin/bash
- /bin/sh
- /bin/csh
- /bin/tcsh
通过usermod、chsh可以更改登录Shell。可以在cat /etc/passwd中查看
Bash基本特性
快捷键、Tab键补全
命令历史(history)
命令别名 (alias)
标准输入和输出重定向(>、>>、2>、2>>、&>)
管道(|)
Shell脚本的设计与运行
什么是Shell脚本
Shell脚本提前将可执行的命令语句写入文件,顺序执行、解释器逐行解释代码。
规范脚本的构成
一个合格规范的脚本应该包括以下这些内容
- #!脚本声明—使用哪种解释器解释代码
- 注释信息(步骤、思路、用途等),以#开始的为注释信息
- 可执行语句

执行脚本的多种方式
-
方式一、需要为文件赋予可执行的权限
-
绝对路径执行

-
相对路径执行

-
-
方式二、不需要文件有可执行权限
- sh脚本文件名

- source脚本文件名,不会启动子进程,通过pstree查看进程树
- sh脚本文件名
变量
定义变量
- 以固定的名称,存放可能有变化的值
- 定义变量的格式 变量名=变量值
- 取消变量的格式 unset 变量名
- 注意事项:
- =两边不能有空格,不要使用关键字做变量名,如ls、cd等
- 如果变量名已经存在则覆盖之前的变量值
- 变量名称有:字母、数字、下划线组成,不能以数字开头
查看变量
查看变量的语法格式:
- $变量名
- ${变量名}
变量类型
- 环境变量(变量名通常大写,有操作系统维护)
- 位置变量(bash内置变量,存储脚本执行时的参数)
- 预定义变量(bash内置变量,可以调用但是不能赋值或者修改)
- 自定义变量(用户自主设置)
环境变量
存储在/etc/profile或~/.bash_profile
命令env可以列出所有的环境变量
常用环境变量:PATH 、PWD、USER、UID、HOME、SHELL
位置变量
存储脚本执行时的参数
使用$n表示,n为数字序列号
$1、$2、… ${10}、 ${11}、…
$1是脚本后面跟的第一个参数
$2是脚本后面跟的第二个参数
预定义变量
用来保存脚本程序的执行信息,可以直接使用这些变量,但是不能直接为这些变量赋值。
| 变量名 | 含义 |
|---|---|
| $0 | 当前所在的进程或脚本名 |
| $$ | 当前运行进程的PID号 |
| $? | 命令执行后的返回状态,0表示正常,1或者其他值表示异常 |
| $# | 已加载的位置变量个数 |
| $* | 所有位置变量的值 |
多种引号的区别
- 双引号 " ":允许扩展,以$引用其他变量
- 单引号’ ':禁用扩展,即便$也视为普通字符
- 反引号
:将命令的执行输出作为变量值,$()与反引号等效。
read 标准输入取值
read从键盘读入变量值完成赋值
格式:read [-p “提示信息”] 变量名
-p 可选,-t 可指定超时秒数,-s设置师傅在终端显示输入的内容
echo “ p a s s " ∣ p a s s w d − − s t d i n " pass" | passwd --stdin " pass"∣passwd−−stdin"name”
变量的作用范围
局部变量–新定义的变量默认只在当前Shell环境中有效,无法在子Shell环境中使用
全局变量–全局变量在当前Shell及子Shell环境中均有效,格式export x=11
Shell中的运算
整数运算
- 加法:num1 + num2
- 减法:num1 - num2
- 乘法:num1 * num2
- 除法:num1 / num2
- 取余数运算:num1 % num2
$[]算式替换
使用 $[]或 $ (())表达式
格式:$[整数1 运算符 整数2]
计算结果替换表达式本身,可结合echo命令输出
变量的自增/减等操作
| 简写表达式 | 完整表达式 |
|---|---|
| i++ | i=i+1 |
| i– | i=i-1 |
| i+=2 | i=i+2 |
| i-=2 | i=i-2 |
| i*=2 | i=i*2 |
| i/=2 | i=i/2 |
| i%=2 | i=i%2 |
let i=2*3 echo $i 等效于 echo $[i=2 * 3]
小数运算–bc计算器
Bash内建机制仅支持整数运算,不支持小数运算,我们可以通过计算器软件bc实现小数运算
- 如果没有该软件则需要使用yum安装
- bc支持交互式和非交互式两种方式计算,scale=n可以约束小数位
echo “scale=2;10/2” | bc
小数比较
bc支持的比较操作符:> >= < <= == !=
表达式成立则返回1,否则返回0
echo “1>2” | bc
echo回显
-n 选项:不换行
-e 选项:支持扩展属性–设置字符颜色等
echo -e “\033[44mOK\033[0m” OK字符就会变颜色
3万+



被折叠的 条评论
为什么被折叠?



