shell的作用----命令解释器 “翻译官”
介于系统内核与用户之间,负责解释命令行
用户的登录shell
登录后默认使用的Shell程序 一般为/bin/bash
不同Shell的内部指令、运行环境等会有所区别
编写脚本代码
使用vi文本编辑器
每一行一条Linux命令 按执行顺序依次编写
执行脚本文件
方法一:脚本文件路径(必须有x权限) ./first.sh
方法二:sh脚本文件路径 sh /first.sh
方法三:source脚本文件路径 source /first.sh
更完善的脚本构成
脚本声明 #!/bin/bash
注释信息
可执行语句
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
类型 |
设备文件 |
文件描述编号 |
默认设备 |
标准输入 |
/dev/stdin |
0 |
键盘 |
标准输出 |
/dev/stdout |
1 |
显示器 |
标准错误输出 |
/dev/stderr |
2 |
显示器 |
重定向操作
类型 |
操作符 |
用途 |
重定向输入 |
< |
从指定的文件读取数据 而不是从键盘输入 |
重定向输出 |
> |
将输出结果保存到指定的文件(覆盖原有内容) |
>> |
将输出结果追加到指定的文件 |
|
标准错误输出 |
2> |
将错误信息保存到指定的文件(覆盖原有内容) |
2>> |
将错误信息追加到指定的文件中 |
|
混合输出 |
&> |
将标准输出、标准错误的内容保存到同一个文件中 |
重定向输出
标准错误输出 重定向输出不可用
混合输出
管道操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象
格式 cmd1 | cmd2 [... | cmdn]
awk -F: 以冒号作为分隔符
Shell变量的作用
为灵活管理Linux系统提供特定参数
变量名 使用固定的名称 由系统预设成用户定义
变量值 能够根据用户设置、系统环境的变化而变化
变量的类型
自定义变量 由用户自己定义、修改和使用
环境变量 由系统维护 用于设置工作环境
位置变量 通过命令行给脚本程序传递参数
预定义变量 Bash中内置的一类变量 不能直接修改
自定义变量
定义一个新的变量
格式:变量名=变量值
变量名以字母或下划线开头 区分大小写 建议全大写
查看变量的值
格式 echo $变量名
对变量进行赋值 Linux的Shell只能赋值的是整数
赋值时使用引号
双引号 允许通过$符号引用其他变量值
单引号 禁止引用其他变量值 $视为普通字符
反撇号 命令替换 提取命令执行后的输出结果
从键盘输入内容为变量赋值
read [-p “提示信息”] 变量名
设置变量的作用范围(两个格式可以混合使用)
格式1:export 变量名 ...
格式2:export 变量名=变量值 ...
父程序导出为全局变量 子程序引用全局变量
整数变量的运算
expr 变量1 运算符 变量2 [运算符 变量3]...
常用运算符
加法运算 +
减法运算 -
乘法运算 \*
除法运算 /
求模(取余)运算 %
环境变量
由系统提前创建 用来设置用户的工作环境
配置文件 /etc/profile ~/.bash_profile
常见的环境变量
PWD、PATH(命令的搜索路径)
USER、SHELL、HOME
位置变量
表示为$n n为1-9之间的数字
数组 定义数组
显示所有数组成员
显示数组中的某一成员
显示数组长度
显示数组成员的长度
预定义变量
$# 命令行中位置变量的个数
$* 所有位置变量的内容
$? 上一条命令执行后返回的状态 当返回状态值为0 表示执行正常 非0为异常或出错
$0 当前执行的进程/程序名
$?的用法
为0时正常 非0时表示异常